我想通过准备好的语句在一个查询中插入10条或更多条记录,这是我的代码
$sql="INSERT INTO post (a,b,c) VALUES ";
$placeholder='';
foreach($result as $record){
$arr=array($record[a],$record[b],$record[c]);
$values[]=$arr;
$placeholder.="(?,?,?),";
}
$placeholder=rtrim($placeholder,',');
$sql.=$placeholder;
try{
$res=$db->prepare($sql);
$res->execute($values);
}catch(Exception $e){
echo $e->getMessage();
}
但是,这不起作用。有可能做我想做的事吗? 如果我准备声明并执行10次声明,那么下一个问题是什么? 连接是否重新创建10次?(连接到db很多都不好) 因为在我的真实代码中,我想在新表中插入1000多条记录。
答案 0 :(得分:1)
在构建要绑定的值时,构建一个数组数组,这应该只是要绑定的值的数组。
foreach($result as $record){
$values[] = $record[a];
$values[] = $record[b];
$values[] = $record[c]);
$placeholder.="(?,?,?),";
}
如果您只想将所有值添加到数组中,则可以使用array_merge()。