71

私はよく理解していないこの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();

?>

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

4

2 に答える 2

127

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

変数ではなく値 0の整数を扱っているため、上記のエラーが発生します。

これを回避するには、次のようにします。

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

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

于 2012-10-28T00:32:22.510 に答える
4

まず、日付ではなく文字列に変更される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();
于 2012-10-28T00:40:04.113 に答える