gpt4 book ai didi

php - 在 foreach() 循环中优化 SQL 查询

转载 作者:行者123 更新时间:2023-11-29 02:20:58 25 4
gpt4 key购买 nike

如果不将查询放入 foreach 循环,我还能如何获取 name

PHP:

$material_decode=json_decode($materials['materials']);
foreach($material_decode as $material_id=>$material_value)
{
$forge_materials=mysql_fetch_assoc(mysql_query('SELECT `name` FROM `forging_materials` WHERE `id`='.$material_id.' LIMIT 1'));
echo '<tr>'.
'<td>'.
$forge_materials['name'].
'</td>'.
'<td>'.
number_format($material_value).
'</td>'.
'</tr>';
}

$material_decode (forge_material_id => material_value):

stdClass Object
(
[2] => 25
[4] => 32
[5] => 23
)

最佳答案

您可以在循环外使用WHERE IN 一次获取所有需要的记录。 这样只需要单个查询

这对你有用:

$material_decode = json_decode($materials['materials'], true);
$forge_materials = mysql_query('SELECT `id`, `name` FROM `forging_materials` WHERE `id` IN ( '. implode(',', array_keys($material_decode)) .')');

while($row = mysql_fetch_assoc($forge_materials))
{
echo '<tr>'.
'<td>'.
$row['name'].
'</td>'.
'<td>'.
number_format($material_decode[$row['id']]).
'</td>'.
'</tr>';
}

请记住,mysql_ 方法已被弃用,现在建议使用 PDOmysqli_ 方法。您可以在文档中阅读更多信息:

关于php - 在 foreach() 循环中优化 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31876785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com