gpt4 book ai didi

PHP MySQL 多个 SQL 查询或每个查询的 JOIN

转载 作者:行者123 更新时间:2023-11-29 06:40:54 26 4
gpt4 key购买 nike

如果我有两个表及其各自的列:

=====================
product_categories
=====================
id | name
=====================

=======================
products
=======================
id | category_id | name
=======================

我有以下 PHP 函数:

// Returns an array of all rows from the products
function getProducts() { ... }

// returns the corresponding row to the given id of the product category
function getProductCategory($category_id) { ... }

目前,我在表格中显示所有产品的列表,并带有以下标题:

  • 编号
  • 类别
  • 姓名

其中category是产品category_id对应的类别名称。

目前,我正在使用 foreach 循环来迭代产品,并为每个产品调用 getProductCategory(...) 函数:

<?php
...

$products = getProducts();

foreach ($products as $product) {
$product_category = getProductCategory($product['category_id']);
...
}

...
?>

如果有很多产品有很多重复查询,这将是对数据库的大量查询。

如果 getProducts() 函数在 SQL 语句中使用 JOIN 包含其所有类别信息,这会是一个好习惯吗?

最佳答案

如果你想每次都获取idcategory_nameproduct_name,你应该创建一个方法并避免创建一个 select,然后对每个产品执行 foreach,然后再执行另一个 select 以获取所有值。

所以尝试这样的事情也许:

function getProductsData() {

$querie = 'SELECT
p.id, p.name,
pc.name as Category
FROM products as p
LEFT JOIN product_categories as pc on pc.id = p.category_id
ORDER BY p.name; -- optionnal
';

// Get the data and return them
// You should get an array with one row =
// id (of the product) / name (of the product) / Category (the name of the category)


}

关于PHP MySQL 多个 SQL 查询或每个查询的 JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51652993/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com