PHP - 太多 mysql_query ("SELECT .. ") ..?

标签 php select mysql

嘿,我正在创建一个电子商店并显示类别树和所有产品及其多种价格变化,我制作了 150 多个 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 )) { }

谢谢,迈克。

最佳答案

减少运行查询的数量通常是个好主意。在这种情况下,您可以在单个查询中选择所有产品的行,例如:

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 排序。

关于PHP - 太多 mysql_query ("SELECT .. ") ..?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1516922/

相关文章:

javascript - 如何在截止日期过后禁用复选框

linux - 当您调用 select(2) 时,内核如何确定套接字已准备就绪?

MySQL INSERT [...] SELECT 与混合数据(来自 SELECT 子句和手动插入的值)?

mysql - 如何在连接表发送的结果上添加动态列

php - sql字符串字段包含一个id

php - 第一次访问后,使用 PHP cookie 自动填充以前用户输入的表单?

php - 使用公平槽策略从队列中获取下一个任务

mysql - 使用 MySQL 查询对 JSON 对象进行子集化

mysql - 基于 LAST_INSERT_ID 的条件插入

Mysql:如果存在则重命名表