ホームページ >バックエンド開発 >PHPチュートリアル >私の PHP コードで「パラメーター 2 を参照で渡すことができません」エラーがスローされるのはなぜですか?

私の PHP コードで「パラメーター 2 を参照で渡すことができません」エラーがスローされるのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-10 16:28:11364ブラウズ

Why Does My PHP Code Throw a

PHP の「パラメータ 2 を参照で渡すことはできません」エラーについて理解する

PHP では、パラメータを参照で渡すと、渡された変数に変更を加えることができます。元の変数に反映されます。ただし、パラメーターが参照によって渡されることが期待されているにもかかわらずそうでない場合は、「パラメーター 2 を参照によって渡すことはできません」というエラーが発生する可能性があります。

特定のエラー シナリオ: 日付比較を使用した UPDATE クエリ

次の PHP コードを考えてみましょう:

$selectedDate = date('d-m-Y', ($createDate));

$sql = "UPDATE Session SET Active = ? WHERE DATE_FORMAT(SessionDate,'%Y-%m-%d' ) <= ?";
$update = $mysqli->prepare($sql);
$update->bind_param("is", 0, $selectedDate);  // Line 13

Inこの例では、行 13 は準備されたステートメントに 2 つのパラメーターをバインドしようとします。

  • 最初のパラメーターは整数 (0) で、値によって渡されます。
  • 2 番目のパラメーターは文字列 ($selectedDate) であり、値によっても渡されます。

ただし、2 番目のパラメーターは変数への参照であることが期待されます。 「is」タイプ文字列の「s」で示されます。参照によって渡されないため、「パラメーター 2 を参照によって渡すことはできません」というエラーがスローされます。

解決策: 変数参照を渡す

このエラーを解決するには、次のように渡します。以下に示すように、2 番目のパラメーターへの変数参照:

$isActive = 0;
$update->bind_param("is", $isActive, $selectedDate);

$isActive を参照渡しすることで、変更が加えられます。プリペアドステートメント内のそれは、元の変数に反映されます。

PHP の参照について

PHP の参照の詳細については、次のドキュメントを参照してください。 : http://php.net/manual/en/ language.references.pass.php.

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

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