嘿,我正在制作一个电子商店并显示类别树和所有产品的价格,我mysql_query("SELECT ...");在一个页面上提供超过150个查询的多种价格变化.(如果算上"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 )) { }
Run Code Online (Sandbox Code Playgroud)
谢谢,迈克.
Luk*_*ský 13
减少运行的查询数量通常是个好主意.在这种情况下,您可以在单个查询中为所有产品选择行,例如:
SELECT * FROM ceny WHERE produkt_id IN (?, ?, ?, ...) ORDER BY gramaz
Run Code Online (Sandbox Code Playgroud)
然后你将有一个循环遍历结果并填充适当的变量:
$ceny = array()
while ($row = mysql_fetch_array($result)) {
$id = $row['produkt_id'];
$ceny[$id][] = $row;
}
Run Code Online (Sandbox Code Playgroud)
现在$ceny[$produkt_id]包含ceny该产品的行列表,按以下顺序排序gramaz.