ホームページ >バックエンド開発 >PHPチュートリアル >PDO 例外「SQLSTATE[HY093]: 無効なパラメータ番号」を解決する方法?

PDO 例外「SQLSTATE[HY093]: 無効なパラメータ番号」を解決する方法?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-01 03:43:171057ブラウズ

How to Solve the PDO Exception:

PDO 例外: "SQLSTATE[HY093]: 無効なパラメータ番号" が解決されました

PDO プリペアド ステートメントを実行しようとしたときに、次のような問題が発生しました。エラー「SQLSTATE[HY093]: パラメータ番号が無効です」。提供されたコードを調べると、同じ名前の名前付きパラメータが複数あることがわかります。

問題は、SQL ステートメント内での名前付きパラメータの使用法と、対応する実行呼び出しにあります。具体的には、パラメータ「:hash」を 2 回使用していますが、これは PDO プリペアド ステートメントでは許可されていません。

このエラーを解決するには、コードを次のように変更します。

$sql = "INSERT INTO persist (user_id, hash, expire)
        VALUES (:user_id, :hash, :expire)
        ON DUPLICATE KEY UPDATE hash=:hash2";

この更新されたステートメントでは、2 番目に出現する「:hash」を置き換えるために、追加の名前付きパラメータ「:hash2」が導入されています。

さらに、execute()呼び出しはそれに応じて変更する必要があります:

$stm->execute(
    array(":user_id" => $user_id, ":hash" => $hash, ":expire" => $future, ":hash2" => $hash)
);

個別の名前付きパラメータを指定することで、パラメータの冗長性によって発生する「SQLSTATE[HY093]」エラーを回避できます。このアプローチにより、適切なパラメーター バインディングと準備されたステートメントの正常な実行が保証されます。

以上がPDO 例外「SQLSTATE[HY093]: 無効なパラメータ番号」を解決する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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