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

该错误意味着第二个参数应该是对变量的引用

由于您不是在处理变量而是值 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 回答