ホームページ >バックエンド開発 >PHPチュートリアル >MySQL の複数の INSERT クエリでの「無効なパラメーター番号」エラーを修正する方法は?

MySQL の複数の INSERT クエリでの「無効なパラメーター番号」エラーを修正する方法は?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-27 12:13:10776ブラウズ

How to Fix the

複数挿入クエリの「無効なパラメータ番号」エラーのトラブルシューティング

複数挿入クエリの準備中に、次のエラーが発生する場合があります:

SQLSTATE[HY093]: 無効なパラメータ番号: パラメータがありませんでした定義済み

問題分析:

このエラーは、$values 配列と $matches 配列の要素の数が一致しない場合に発生します。 insert ステートメントは、$values 内の要素の数に基づいて特定の数のパラメーターを予期しますが、$matches で提供されるデータはこの予期と一致しません。

解決策:

この問題を解決するには、$values 配列と $matches 配列の両方の要素数が同じであることを確認してください。通常、これにはループの前に $values 配列を初期化し、既存の値が含まれないようにする必要があります。

さらに、データベース テーブルのハッシュ列には一意のインデックスが必要です。

リファクタリングされたコード:

$matches = array('1');
$count = count($matches);
$values = [];

for ($i = 0; $i < $count; ++$i) {
    $values[] = '(?)';
}

$sql = "INSERT INTO hashes (hash) VALUES " . implode(', ', $values) . " ON DUPLICATE KEY UPDATE hash=values(hash)";
$stmt = $dbh->prepare($sql);
$data = $stmt->execute($matches);

これらのガイドラインに従うことで、 「無効なパラメータ番号」エラーを回避し、複数の挿入クエリを正常に実行できます。

以上がMySQL の複数の INSERT クエリでの「無効なパラメーター番号」エラーを修正する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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