Php 如何在mysql中使用pdo准备状态记录插入多个?
我想通过prepared statment在单个查询中插入10条或更多记录,以下是我的代码Php 如何在mysql中使用pdo准备状态记录插入多个?,php,mysql,database,pdo,Php,Mysql,Database,Pdo,我想通过prepared statment在单个查询中插入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.="(?,?,?),"; } $plac
$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条以上的记录。在构建要绑定的值时,构建一个数组,这应该是一个要绑定的值数组
foreach($result as $record){
$values[] = $record[a];
$values[] = $record[b];
$values[] = $record[c]);
$placeholder.="(?,?,?),";
}
或者,如果您只想将所有值添加到数组中,您可以使用array\u merge。您建议的prepare语句并执行10次是正确的方法-它将使用相同的连接,除非您在循环的每次迭代中关闭并重新打开