Php 如何在mysql中使用pdo准备状态记录插入多个?

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

我想通过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.="(?,?,?),";
 }

$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次是正确的方法-它将使用相同的连接,除非您在循环的每次迭代中关闭并重新打开