PHP error: “Cannot pass parameter 2 by reference”

匿名 (未验证) 提交于 2019-12-03 02:11:02

问题:

I just need help on this PHP error which I do not quite understand:

Fatal error: Cannot pass parameter 2 by reference in /web/stud/openup/inactivatesession.php on line 13

<?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();  ?>

What does this error mean? How can this error be fixed?

回答1:

The error means that the 2nd argument is expected to be a reference to a variable.

Since you are not handing a variable but an integer of value 0, it generates said error.

To circumvent this do:

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

In case you want to understand what is happening, as opposed to just fixing your Fatal error, read this: http://php.net/manual/en/language.references.pass.php



回答2:

First,you shouldn't use DATE_FORMAT when you want to compare date because DATE_FORMAT changes it to string not date anymore,

UPDATE Session  SET Active = ?  WHERE SessionDate <= ?

Second, store the value first on a variable and pass it on the paramater

$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();


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!