我有两个阵列:
$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,但在这种情况下太慢了。有什么建议吗?
最佳答案
为什么不在一个查询中插入所有行,而不是对要插入的每一行运行一个查询?查询是你在那里付出的昂贵代价,肯定不是问题的前因。
你为什么不按照以下思路来做:
$sql = "INSERT INTO solucion (rid, pid) VALUES ";
$vls = array();
foreach($questions as $value) {
$idanswer = ($answers[$value[pid]]) ? $answers[$value[pid]] : 0;
$idquestion = $value[pid];
$vls[] = " ( '$idanswer ', '$idquestion ')";
}
$sql .= implode(', ', $vls);
$db->query($sql);