データベース エラーのトラブルシューティング: パラメータ番号が無効です
現在の問題には、複数の挿入操作を試行する際の SQL クエリ準備エラーが関係しています。具体的には、「SQLSTATE[HY093]: 無効なパラメータ番号: パラメータが定義されていません」というエラー メッセージが表示されます。
調査すると、$values 配列と $matches 配列の要素の数が一致していないことが明らかです。マッチ。この矛盾は、$values にループに入る前の既存の値が含まれている可能性があるという事実から生じます。この問題を解決するには、$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);
以上が複数の挿入で発生する「SQLSTATE[HY093]: パラメータ番号が無効です」エラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。