PHP 错误:“无法通过引用传递参数 2”
Posted
技术标签:
【中文标题】PHP 错误:“无法通过引用传递参数 2”【英文标题】:PHP error: "Cannot pass parameter 2 by reference" 【发布时间】:2012-10-17 19:23:30 【问题描述】:我只是需要关于这个我不太明白的 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();
?>
这个错误是什么意思?如何解决此错误?
【问题讨论】:
给你参考:这个issue有类似的问题***.com/questions/8287581/… 【参考方案1】:错误意味着第二个参数应该是对变量的引用。
由于您处理的不是变量,而是值为0的整数,因此会产生上述错误。
为了规避这个问题:
$a = 0;
$update->bind_param("is", $a, $selectedDate); //LINE 13
如果您想了解正在发生的事情,而不是仅仅修复您的 Fatal error
,请阅读以下内容:http://php.net/manual/en/language.references.pass.php
【讨论】:
PHP 有时会很奇怪。 真的很有趣,因为错误消息似乎表明完全相反 :-) 它说“无法通过引用传递参数 2”,我就像“但我没有将它作为参考传递,所以什么是问题?” 解释很有帮助 【参考方案2】:首先,当您想比较日期时,您不应该使用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();
【讨论】:
以上是关于PHP 错误:“无法通过引用传递参数 2”的主要内容,如果未能解决你的问题,请参考以下文章