Ошибка 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('dm-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(); ?> 

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

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

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

Чтобы обойти это, выполните:

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

Если вы хотите понять, что происходит, а не просто фиксировать свою Fatal error , прочтите следующее: http://php.net/manual/en/language.references.pass.php

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

 UPDATE Session SET Active = ? WHERE SessionDate <= ? 

Во-вторых, сначала сохраните значение переменной и передайте ее параметру

 $createDate = mktime(0,0,0,09,05,date("Y")); $selectedDate = date('dm-Y', ($createDate)); $active = 0; $sql = "UPDATE Session SET Active = ? WHERE SessionDate <= ?"; $update = $mysqli->prepare($sql); $update->bind_param("is", $active, $selectedDate); $update->execute();