问题:
在为多次插入而设计的 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中文网其他相关文章!