【发布时间】:2014-06-26 15:05:02
【问题描述】:
请帮我优化以下 foreach 循环。它适用于小数组,当循环很短但问题是有时,当数组很大时,它会强制查询在 foreach 内循环很多次,这导致我的服务器卡住抛出一个503 错误。我需要以某种方式在 foreach 之外进行查询,但仍然可以选择 WHERE cat=$id[0] AND sub = $id[1] AND fir = $id[2]。
foreach($array as $id){
$query=mysqli_query($con,"SELECT * FROM table WHERE cat=$id[0] AND sub = $id[1] AND fir = $id[2]");
$thiss = mysqli_fetch_array($query);
echo $thiss['name'];
}
【问题讨论】:
-
为什么你首先要做一个 foreach 查询循环而不是一个写得很好的查询?
-
我该怎么做?请记住,我每次都需要选择 cat = x 和 sub = x 和 fir = x 的位置...
-
能否请您对 $array 进行 var_dump,以便我了解数组包含的内容/您在宏伟计划中真正想要做的事情?
-
array(30) { [0]=> array(3) { [0]=> string(2) "10" [1]=> string(1) "3" [2] => 字符串(2) "12" } [1]=> 数组(3) { [0]=> 字符串(2) "10" [1]=> 字符串(1) "3" [2]=> 字符串(2) "13" } ..
-
我有一个如下所示的数组:[0] => 1,2,3 [1] => 2,4,12 [2] => 1,3,7 等等..那些“随机数”以以前的形式收集..它们都链接到具有类别子类别和公司ID的复杂数据库..例如 [0] => 1(category), 2(subcategory), 3 (公司)..所以这就是为什么我需要使用 foreach 选择所有公司.. 它可以工作,但是当数组大于 20 或 50 个键时需要很多时间..
标签: php database optimization foreach