ホームページ >バックエンド開発 >PHPチュートリアル >PDO 例外「SQLSTATE[HY093]: 無効なパラメータ番号」を解決する方法?
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 サイトの他の関連記事を参照してください。