我有 2 个数组:
$questions: pid => name
$answers: pid => rid
它将所有问题 (pid) 插入数据库,如果有答案 (rid),则插入答案;如果没有回答,它会插入 0。
foreach($questions as $value) {
$idanswer = ($answers[$value[pid]]) ? $answers[$value[pid]] : 0;
$idquestion = $value[pid];
$sql = "INSERT INTO solucion ( rid, pid) VALUES ( '$idanswer ', '$idquestion ')";
$db - > query($sql);
}
在我缺乏经验的情况下,我对几乎所有事情都使用 foreach,但在这种情况下太慢了。有什么建议吗?
最佳答案
不是在 PHP 循环中包装单个 INSERT
查询,而是使用 PHP 循环在字符串中构建一个单个 INSERT
查询,然后在最后执行该单个查询。
提示: INSERT
可以同时插入多个行。
虽然单个 INSERT
很快,但是 MySQL 查询的组合往返总是扩展性很差,因为您正在重复连接/通信/解释/每个 N
数组元素的文件访问开销...所有这些都是不必要的。
关于php - Foreach太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15547206/