ホームページ >バックエンド開発 >PHPチュートリアル >PDO が「パラメータを参照で渡すことはできません」エラーをスローするのはなぜですか?bindValue を使用して修正するにはどうすればよいですか?

PDO が「パラメータを参照で渡すことはできません」エラーをスローするのはなぜですか?bindValue を使用して修正するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-23 20:29:11567ブラウズ

Why Does PDO Throw a

bindParam による「パラメーターを参照で渡すことはできません」エラーを回避する

PDO を使用する場合、不可解なエラー「パラメーターを参照で渡すことができません」が発生する可能性があります。パラメータによる参照」は、bindParam を次のような定数値で使用する場合に使用します。 PDO::PARAM_NULL.

このエラーの理由は、bindParam の性質にあります。呼び出し時に値をパラメータにバインドするbindValueとは異なり、bindParamは参照によって変数をバインドします。これは、bindParam がクエリの実行中に変更できる変数を期待していることを意味します。 PDO::PARAM_NULL のような変更できない定数値を使用すると、エラーが発生します。

この問題を解決するには、定数値に bindingParam の代わりに bindingValue を使用します。 bindingValue は 2 番目のパラメータとして値を受け入れ、参照は必要ありません。

bindValue を正しく使用する例を次に示します。

$stmt = $dbh->prepare('INSERT INTO table(v1, v2, ...) VALUES(:v1, :v2, ...)');
$stmt->bindValue(':v1', null, PDO::PARAM_INT);

この場合、bindValue は値 null を :v1 に割り当てます。データ型 PDO::PARAM_INT のパラメーター。

PHP ドキュメントでは、次の使用を推奨していることに注意してください。 bindValue(':param', null, PDO::PARAM_NULL) は、すべての場合に機能するとは限りません。したがって、代わりに PDO::PARAM_INT または適切なデータ型を使用することをお勧めします。

以上がPDO が「パラメータを参照で渡すことはできません」エラーをスローするのはなぜですか?bindValue を使用して修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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