mysql_query("SELECT ...");
查询一样。 (如果算上“while”循环)。
是否太多,如果是,它会产生任何负面影响吗? (ofc。加载数据需要更长的时间..)
我也可以不用这样的方式实现这段代码的效果吗?
$result2 = mysql_query("SELECT * FROM ceny WHERE produkt_id='$id' ORDER BY gramaz");
$result3 = mysql_query("SELECT * FROM ceny WHERE produkt_id='$id' ORDER BY gramaz");
$result4 = mysql_query("SELECT * FROM ceny WHERE produkt_id='$id' ORDER BY gramaz");
$result5 = mysql_query("SELECT * FROM ceny WHERE produkt_id='$id' ORDER BY gramaz");
while( $row2 = mysql_fetch_array( $result2 )) { }
while( $row3 = mysql_fetch_array( $result2 )) { }
while( $row4 = mysql_fetch_array( $result2 )) { }
while( $row5 = mysql_fetch_array( $result2 )) { }
谢谢,迈克。
答案 0 :(得分:13)
减少运行的查询数量通常是个好主意。在这种情况下,您可以在单个查询中选择所有产品的行,例如:
SELECT * FROM ceny WHERE produkt_id IN (?, ?, ?, ...) ORDER BY gramaz
然后你会有一个循环遍历结果并填充相应的变量:
$ceny = array()
while ($row = mysql_fetch_array($result)) {
$id = $row['produkt_id'];
$ceny[$id][] = $row;
}
现在$ceny[$produkt_id]
包含ceny
针对该产品的行列表,按gramaz
排序。
答案 1 :(得分:0)
看起来你的情况迫切需要一个连接,如果你真的想减少该页面的负载,可能需要一些AJAX。
如果我正确理解你,你想要显示一个类别的树状菜单,大概是当你点击打开一个特定的分支时,你会看到属于该类别的项目,对吗?
所以,你当前的方法是遍历类别,然后从items表中选择*来显示它们,对吗?
如果是这种情况,并且我正确理解它,可以使用简单的连接来解决。您可能希望对items表执行单个select语句,通过items表中的外键连接到categories表,然后按类别排序。
现在,您可以遍历单个结果集以显示类别和相关项目。