首页  >  文章  >  数据库  >  PDO MySQL:如何在一个查询中插入多行而不出现“数组到字符串转换”错误?

PDO MySQL:如何在一个查询中插入多行而不出现“数组到字符串转换”错误?

Susan Sarandon
Susan Sarandon原创
2024-11-07 04:57:02626浏览

PDO MySQL: How to Insert Multiple Rows in One Query Without

PDO MySQL:在一个查询中插入多行

问题:

在为多次插入而设计的 PDO 类中,尽管创建了参数化查询,但执行查询时仍会出现“数组到字符串转换”错误。如何解决此错误?

答案:

要解决此错误,一种方法是迭代数据数组并使用 bindValue 而不是绑定整个数组。这可确保每个值正确绑定到特定参数。

以下是实现此方法的示例:

$query = "INSERT INTO $table (key1, key2, key3) VALUES ";
$qPart = array_fill(0, count($data), "(?, ?, ?)");
$query .= implode(",", $qPart);
$stmt = $this->start->prepare($query);
$i = 1;
foreach ($data as $item) { 
    $stmt->bindValue($i++, $item['key1']);
    $stmt->bindValue($i++, $item['key2']); 
    $stmt->bindValue($i++, $item['key3']);
}
$stmt->execute();
或者,您可以使用

foreach 循环在准备语句中为每一行绑定值:

$stmt = $pdo->prepare("INSERT INTO foo VALUES (1, 2, 3)");
foreach($data as $item) {
    $stmt->execute($item);
}
此方法会多次执行查询,每行一次。不过,它比前一种方法更容易实现。

以上是PDO MySQL:如何在一个查询中插入多行而不出现“数组到字符串转换”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn