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 サイトの他の関連記事を参照してください。