ホームページ > データベース > mysql チュートリアル > PDO INSERT...ON DUPLICATE KEY UPDATE クエリで同じ名前のパラメータを 2 回使用すると、「無効なパラメータ番号」エラーが発生するのはなぜですか?

PDO INSERT...ON DUPLICATE KEY UPDATE クエリで同じ名前のパラメータを 2 回使用すると、「無効なパラメータ番号」エラーが発生するのはなぜですか?

Susan Sarandon
リリース: 2024-12-10 14:57:09
オリジナル
667 人が閲覧しました

Why Does Using the Same Named Parameter Twice in a PDO INSERT...ON DUPLICATE KEY UPDATE Query Cause a

PHP PDOException: 無効なパラメーター番号

問題:

を使用して INSERT クエリを構築するときON DUPLICATE KEY UPDATE 句。名前付きパラメータ マーカーを 2 回使用します。 execute() メソッドにより、「SQLSTATE[HY093]: パラメータ番号が無効です」エラーが発生する可能性があります。

解決策:

この問題を解決するには、別のパラメータ マーカーを割り当てます。 execute() メソッドの各値について。更新されたコードは次のとおりです:

$sql = "INSERT INTO persist (user_id, hash, expire)
        VALUES (:user_id, :hash, :expire)
        ON DUPLICATE KEY UPDATE hash=:hash2";
$stm->execute(
    array(":user_id" => $user_id,
          ":hash" => $hash,
          ":expire" => $future,
          ":hash2" => $hash)
);
ログイン後にコピー

説明:

PDO ドキュメントには、「プリペアド ステートメント内で同じ名前の名前付きパラメーター マーカーを 2 回使用することはできません」と記載されています。 。」これは、クエリに渡される各値には一意のパラメーター マーカーが必要であるためです。更新されたハッシュ値 (:hash2) に別のパラメーター マーカーを割り当てることで、この問題は解決されます。

以上がPDO INSERT...ON DUPLICATE KEY UPDATE クエリで同じ名前のパラメータを 2 回使用すると、「無効なパラメータ番号」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート