Подтвердить что ты не робот

Ошибка PHP: "Не удается передать параметр 2 по ссылке"

Мне просто нужна помощь в этой ошибке PHP, которую я не совсем понимаю:

Неустранимая ошибка: невозможно передать параметр 2 по ссылке в /web/stud/openup/inactivatesession.php в строке 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();

?>

Что означает эта ошибка? Как можно устранить эту ошибку?

4b9b3361

Ответ 1

Ошибка означает, что 2-й аргумент должен быть ссылкой на переменную.

Поскольку вы не передаете переменную , а целое число 0, она генерирует указанную ошибку.

Чтобы обойти это:

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

Если вы хотите понять, что происходит, вместо того, чтобы просто фиксировать ваш Fatal error, читайте это: http://php.net/manual/en/language.references.pass.php

Ответ 2

Во-первых, вы не должны использовать DATE_FORMAT, когда хотите сравнить дату, потому что DATE_FORMAT больше не изменяет его на строку, а не на дату

UPDATE Session 
SET Active = ? 
WHERE SessionDate <= ?

Во-вторых, сначала сохраните значение переменной и передайте ее на 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();