gpt4 book ai didi

PHP 和 Mysql - 嵌套循环

转载 作者:行者123 更新时间:2023-11-29 11:32:33 25 4
gpt4 key购买 nike

我有 2 个表 - 产品和产品图像。产品具有唯一的 ID 和标题。ProductImages 具有productid 和imageurl。这些是我的表格的示例:

产品:

|id|title    |
_____________
|1 |Laptop |
|2 |Speakers |

产品图片:

|productid|imageurl|
___________________
| 1 |lap1.png|
| 1 |lap2.png|
| 1 |lap3.png|
| 2 |spe1.png|

现在我在 PHP 中有一个嵌套循环。循环遍历所有行 -> select * from products对于循环内的每个产品 -> select * from Productimages where Productid = id 这基本上是第一个循环内的另一个循环。

然后我将所有产品图像放入数组中并解码为 JSON [标题,照片]。

现在假设你的productimages中有200万行,查询时间太长,有什么办法可以提高效率吗?

$query = "SELECT * FROM products ORDER BY id LIMIT 10;
$result = mysqli_query($con,$query);

if(mysqli_num_rows($result)>0)
{
$response = array();
while($row = mysqli_fetch_assoc($result)) {
$photos = array();
$id = $row["id"];
$title = $row["title"];

$queryp = "select imageurl from productimages where productid= '".$id."';";
$resultp = mysqli_query($con,$queryp);

if(mysqli_num_rows($resultp)>0)
{
while($row2 = mysqli_fetch_assoc($resultp)) {
$photourl = $row2["imageurl"];
array_push($photos,$photourl);
}
}
}
}

最佳答案

对您来说一些改进可能是:

1) 不要使用select *。请改用列名。例如选择 products.id、products.title、productimages.imageurl

2) 使用JOIN代替嵌套循环

因此,您可以尝试查询如下数据:

select products.id, products.title, productimages.imageurl
from products
join productimages on products.id = productimages.productid
ORDER BY products.id LIMIT 10

关于PHP 和 Mysql - 嵌套循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37161797/

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