問題:
在為多次插入而設計的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中文網其他相關文章!