ホームページ >データベース >mysql チュートリアル >マルチパート INSERT クエリが失敗するのはなぜですか? どうすれば修正できますか?

マルチパート INSERT クエリが失敗するのはなぜですか? どうすれば修正できますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-25 07:36:28965ブラウズ

Why Does My Multi-Part INSERT Query Fail, and How Can I Fix It?

複数の挿入クエリの実行に失敗しました: 原因と解決策

複数の部分からなる挿入クエリを実行すると、次のエラー メッセージが表示される場合があります失敗:

SQLSTATE[HY093]: Invalid parameter number: parameter was not defined

แม้ว่าก่อนเรียกใช้ count($matches) will match count($values)、このエラーが発生する可能性があります。

このエラーの原因は、 $values の要素が $matches の要素の数と一致しません。 $values と $matches に同じ数の要素が含まれていない場合、クエリは X パラメータを期待しますが、Y データ要素 ($matches) しか取得しないため、挿入リクエストは失敗します。この場合、$values にはすでに値が含まれている可能性が高くなります。これが、要素の数が一致しない理由です。

この問題を回避するには、ループの前に必ず配列を初期化する必要があります。

さらに、列 " hash " には一意のインデックスが含まれています。

修正されたコード構造の例を次に示します:

$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 クエリが失敗するのはなぜですか? どうすれば修正できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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