ホームページ >バックエンド開発 >PHPチュートリアル >準備された複数の INSERT クエリで「SQLSTATE[HY093]: 無効なパラメーター番号」が表示されるのはなぜですか?
準備された複数挿入クエリの「SQLSTATE[HY093]: 無効なパラメーター番号」の解決エラー
複数挿入クエリを実行しようとすると、 「SQLSTATE[HY093]: 無効なパラメータ番号: パラメータが定義されていません」というエラーが発生する場合があります。パラメータ配列と入力データ要素のカウントが一致しているにもかかわらず、このエラーは継続します。
エラーについて
このエラーは、パラメータの数が一致しないために発生します。パラメーター配列の要素 ($values) と入力データ ($matches)。プリペアド ステートメントを実行する場合、クエリでは特定の数のパラメーターが予期され、矛盾があるとこのエラーが発生します。
問題の解決
この問題を解決するには、パラメータを生成するループに入る前に、$values が初期化されていることを確認してください。これにより、既存の値がカウントに影響を与えることがなくなります。さらに、データベース内の「ハッシュ」列に一意のインデックスが存在することを確認すると、潜在的な競合をさらに防ぐことができます。
改訂されたコード
改訂されたコードは次のとおりです。これらのリビジョンを組み込む:
$matches = array('1'); $count = count($matches); $values = []; for ($i = 0; $i < $count; ++$i) { $values[] = '(?)'; } // INSERT INTO DATABASE $sql = "INSERT INTO hashes (hash) VALUES " . implode(', ', $values) . " ON DUPLICATE KEY UPDATE hash=values(hash)"; $stmt = $dbh->prepare($sql); $data = $stmt->execute($matches);
以上が準備された複数の INSERT クエリで「SQLSTATE[HY093]: 無効なパラメーター番号」が表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。