ホームページ > バックエンド開発 > PHPチュートリアル > PHP PDO コードで「SQLSTATE[HY093]: 無効なパラメータ番号」エラーが発生するのはなぜですか?

PHP PDO コードで「SQLSTATE[HY093]: 無効なパラメータ番号」エラーが発生するのはなぜですか?

Barbara Streisand
リリース: 2024-11-24 15:50:17
オリジナル
968 人が閲覧しました

Why Am I Getting a

エラー: PHP PDOException のパラメーター番号が無効です

add_persist 関数を実行しようとすると、開発者はエラー「SQLSTATE[HY093]: 無効なパラメーター番号」が発生することがあります。このエラーは、SQL クエリ内のパラメーター バインディングが正しくないことが原因で発生します。

提供されたコードでは、$sql ステートメントは、INSERT および ON DUPLICATE KEY UPDATE コマンドを実行して永続テーブル内の行を更新しようとします。ただし、$stm->execute 呼び出し内のパラメーター バインディングには矛盾があります。具体的には、:hash パラメータは 2 回表示されますが、PDO ドキュメントによると、各一意のパラメータ マーカーは値に 1 回だけバインドする必要があります。

この問題を解決するには、$sql クエリを変更して個別のパラメータを含める必要があります。次のように、渡される各値のパラメータ マーカー:

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

さらに、$stm->execute 呼び出しには、両方のバインディングが含まれている必要があります。 :hash および :hash2 パラメータ:

$stm->execute(
    array(":user_id" => $user_id, 
          ":hash" => $hash, 
          ":expire" => $future,
          ":hash2" => $hash)
);
ログイン後にコピー

このパラメータ バインディングの問題に対処することで、add_persist 関数は「無効なパラメータ番号」エラーを引き起こすことなく SQL クエリを正しく実行します。

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

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