【发布时间】:2011-06-27 01:04:56
【问题描述】:
我在 foreach 循环中有一个 SQL 查询。有时可能有很多,我的意思是要执行很多查询,这取决于几个标准,可能多达 78 个查询。
现在,我知道过早的优化是万恶之源,但我不想看到 78 个查询 - 这不健康。
代码如下:
$crumbs = explode(",", $user['data']['depts']);
foreach ($crumbs as &$value) {
$data = $db->query("SELECT id FROM tbl_depts WHERE id = '" . $value . "'");
$crumb = $data->fetch_assoc();
$dsn = $db->query("SELECT msg, datetime FROM tbl_motd WHERE deptid = '" . $value . "'");
$motd = $dsn->fetch_assoc();
if ($motd['msg'] != "") {
<?php echo $motd['msg']; ?>
}
}
我可以做得更好吗?
【问题讨论】:
-
除了以下优化之外,您可能需要考虑将其设为存储过程而不是直接选择以提高性能。
-
请注意,此代码容易受到 sql 注入攻击。
-
你好丹尼尔,为什么会这样?数据只是得到一个数组,在放入之前已经过清理。Aldo、$user['data'] 及其子级也在这段代码之前被清理过。