gpt4 book ai didi

php - 使用 while 循环和 mysql_fetch_array 的结果很慢

转载 作者:行者123 更新时间:2023-11-29 08:58:19 24 4
gpt4 key购买 nike

我从以下代码中得到的结果非常慢。我已经尝试对其进行故障排除几个小时,但没有结果。我只包含了相关代码。

编辑:

我试图从数据库中选择一个 ID,然后使用该 ID 获取与其关联的所有图像。然后我将这组图像缩小到一张。获得该图像后,我将通过外部文件调整其大小。

我尝试删除代码的各个部分来识别问题,似乎速度减慢是由第二个查询引起的,但我不确定为什么。感谢您的帮助。

$getworks = mysql_query ("SELECT a_id from artists where display_works = '1' and active = '1' order by project_year desc, fullname desc");

while ($getworksrow = mysql_fetch_assoc($getworks)){
$totalimages=1;
$addstyle = "";
$id = $getworksrow["a_id"];
$getimages = mysql_query ("SELECT a_id, image_id from images where a_id = '". $id ."' order by position asc LIMIT 1");
$getimagesrow = mysql_fetch_assoc($getimages);

foreach ($getimagesrow as $getimagesrows){
extract($getimagesrow);

if($totalimages > 1){ $addstyle = 'style="display:none;"'; }
else {
$myimagename = "http://artist.com/$a_id/images/$image_id" . "_large.jpg";
list($width, $height, $type, $attr) = getimagesize("$myimagename");
$myimagename = "http://artist.com/artists/resize.php/$a_id/images/$image_id" . "_large.jpg?resize(157x2000)";

if($getworksrows["layout"] == "vert"){$pl = "_vertical";}else if($getworksrows["layout"] == "website"){$pl = "-s";}else if($getworksrows["layout"] == "video"){$pl = "_video";}else{$pl = "_horizontal";}
echo "<li class='thumbnail_container' $addstyle> <a class='thumbnail' href=\"../works$pl.php?a_id=" . $getworksrows["a_id"] . "\"><span><img src=\"$myimagename\" /></span>\n</a></li>\n";
}

$totalimages++;
}

}

最佳答案

执行这样的查询会产生很大的性能开销,特别是当父查询有很大的编号时。记录。

您应该使用连接艺术家表和图像表并通过单个查询获取所有数据。

稍后制作每个艺术家和图像的二维数组。并根据2D数组循环显示数据

以下是您应该使用的联接查询:

SELECT * from artists as art 
left join images as img on art.a_id=img.a_id
where display_works = '1' and active = '1'
order by project_year desc, fullname desc

在创建数据数组时:

   while ($getworksrow = mysql_fetch_object($getworks)){

$data['a_id']['img_id']=$getworksrow->image; //Make 2D array
........
........

}

循环并显示数据:

foreach($data as $id=>$images)
{
foreach($images as $val){
// Do your stuff for displaying data
}

}

所以请进行必要的更改。

关于php - 使用 while 循环和 mysql_fetch_array 的结果很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9325783/

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