web-dev-qa-db-ja.com

PHP error: "参照によりパラメータ2を渡すことができません"

私はこれについて助けが必要ですPHP私はまったく理解していないエラー:

致命的エラー:13行目の/web/stud/openup/inactivatesession.phpで参照によりパラメーター2を渡すことができません

<?php

error_reporting(E_ALL);

include('connect.php');

$createDate = mktime(0,0,0,09,05,date("Y"));
$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
$update->execute();

?>

このエラーはどういう意味ですか?このエラーはどのように修正できますか?

42
user1723760

エラーは、2番目の引数が変数への参照であると予想されることを意味します。

変数ではなく、値0の整数を渡さないため、上記のエラーが生成されます。

これを回避するには:

$update->bind_param("is", $a = 0, $selectedDate);  //LINE 13

単にFatal errorを修正するのではなく、何が起こっているのかを理解したい場合は、これを読んでください: http://php.net/manual/en/language.references.pass.php =

84
Gung Foo

最初に、DATE_FORMATが文字列に変更するため、日付を比較するときにDATE_FORMATを使用しないでくださいもう日付ではない

UPDATE Session 
SET Active = ? 
WHERE SessionDate <= ?

第二に、値を最初に変数に保存し、パラメータに渡します

$createDate = mktime(0,0,0,09,05,date("Y"));
$selectedDate =  date('d-m-Y', ($createDate));
$active = 0;
$sql = "UPDATE Session SET Active = ? WHERE SessionDate <= ?";                                         
$update = $mysqli->prepare($sql);
$update->bind_param("is", $active, $selectedDate);  
$update->execute();
5
John Woo