ホームページ  >  記事  >  データベース  >  PDO MySQL: 「配列から文字列への変換」エラーを発生させずに 1 つのクエリに複数の行を挿入する方法

PDO MySQL: 「配列から文字列への変換」エラーを発生させずに 1 つのクエリに複数の行を挿入する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-11-07 04:57:02626ブラウズ

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

PDO MySQL: 1 つのクエリで複数の行を挿入

質問:

複数の挿入用に設計された PDO クラスでは、パラメータ化されたクエリを作成したにもかかわらず、クエリの実行時に「配列から文字列への変換」エラーが発生します。このエラーはどのように解決できますか?

回答:

このエラーを解決するには、1 つの方法は、データ配列を反復処理し、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 ループを使用することもできます。 prepare ステートメント内で各行の値をバインドします:

$stmt = $pdo->prepare("INSERT INTO foo VALUES (1, 2, 3)");
foreach($data as $item) {
    $stmt->execute($item);
}
この方法では、クエリが行ごとに 1 回ずつ複数回実行されます。ただし、前のアプローチよりも実装が簡単です。

以上がPDO MySQL: 「配列から文字列への変換」エラーを発生させずに 1 つのクエリに複数の行を挿入する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。