在PHP中,当我使用$ dbh-> prepare($ query) - >用占位符执行($ values)时,如何一次插入多条记录?
问题描述:
$dbh = new PDO($dsn, $username, $password);
$query = 'INSERT INTO `table1` (`id`, `name`) VALUES (?, ?)';
$values = [
[1, 'Mary'],
[2, 'Peter'],
[3, 'Mike']
];
$stmt = $dbh->prepare($query);
$stmt->execute($values);
我知道上面的代码会导致错误。但是如果我想用占位符方便地插入多个记录,我该怎么办?
答
@CBroe为这个问题提供了很好的答案。请参考上述评论,特别是参考他发布的链接,其中有更详细的讨论。
[PDO Prepared Inserts multiple rows in single query](https://stackoverflow.com/questions/1176352/pdo-prepared-inserts-multiple-rows-in-single-query) – CBroe
OK,谢谢非常!似乎没有“优雅”的方式来实现这一点。 – Benson
对于一个人来说,并不需要......准备好的语句,语句和数据将相互独立地发送到数据库。所以你可以绑定参数,然后在循环中执行语句;这并不会减慢速度,因为多次发送针对单个行插入的“传统”语句会降低速度。 – CBroe