脚本宝典收集整理的这篇文章主要介绍了php – 在我的情况下避免循环内的查询,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我有这个需要循环的大数组:
$images = scandir($imgIT_root_path . '/' . IMAGES_PATH); $indexhtm = array_seArch('index.htm',$images); unset($images[0],$images[1],$images[$indexhtm]);
现在我有一个数组,其中包含我的IMAGES_PATH中文件(图像)的所有文件名.现在问题来了:
其中一些图像在数据库中注册,因为注册用户的图像列在我的数据库中.现在我需要根据上面的数组给我的图像名称检索user_id.
在循环中我只是这样做:
foreach ($images as $image_name) { $query = $db->PRepare('SELECT user_id From imgit_images WHERE image_name = :name'); $query->bindValue(':name',$image_name,PDO::PARAM_STR); $query->execute(); $row = $query->fetch(PDO::FETCH_ASSOC); $user_id = $row['user_id']; echo $user_id; }
这工作正常,但效率等于0.使用user_id我计划从imgit_users表中获取其他东西,例如用户名,这将需要在该循环内进行另一个查询.
有没有办法在进入循环之前获取这些user_id并在循环中使用它们?
这是imgit_images的表结构:
虽然这是imgit_users的架构:
$image_names = "'".implode("','",$images)."'"; $query = $db->prepare("SELECT img.user_id,image_name,username From imgit_images img INNER JOIN imgit_users u ON u.user_id = img.user_id WHERE image_name IN(".$image_names.")"); $query->execute(); while($row = $query->fetch(PDO::FETCH_ASSOC)) { echo $row['user_id']."'s image is ".$row['image_name']; }
你可能需要调整一下(没有测试过),但你似乎能够,所以我并不担心!
以上是脚本宝典为你收集整理的php – 在我的情况下避免循环内的查询全部内容,希望文章能够帮你解决php – 在我的情况下避免循环内的查询所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。