我被告知在循环中使用查询(选择)是一种不好的做法,因为它会降低服务器性能.
我有一个像这样的数组
Array ( [1] => Los Angeles ) Array ( [2] =>New York) Array ( [3] => Chicago )
这些只是3个索引.我正在使用的数组没有常量大小,因此有时它可以包含多达20个索引.
现在,我正在做的是(这不是所有的代码,但基本的想法)
>对于循环
>查询服务器并选择居住在“洛杉矶”的所有人的姓名
>打印出来的名字
输出将如下所示:
Los Angeles Michael Stern David Bloomer William Rod New York Kary Mills Chicago Henry Davidson Ellie Spears
要进一步添加到MrCodes的答案,如果你从数组开始: –
$Cities = array(1=>'Los Angeles',2=>'New York',3=>'Chicago'); $query = "SELECT town,personname FROM people WHERE town IN('".implode("','",$Cities)."') ORDER BY town"; if ($sql = $MysqLiconnection->prepare($query)) { $sql->execute(); $result = $sql->get_result(); $PrevCity = ''; while ($row = $result->fetch_assoc()) { if ($row['town'] != $PrevCity) { echo $row['town']."<br />"; $PrevCity = $row['town']; } echo $row['personname']."<br />"; } }
作为数据库设计问题,您可能应该将城镇名称放在单独的表中,并且该人员的表包含城镇的ID而不是实际的城镇名称(使验证更容易,更快,并且验证不太可能错过记录因为有人把他们的家乡打错了)