Мне просто нужна помощь по этой ошибке PHP, которую я не совсем понимаю:
Неустранимая ошибка: невозможно передать параметр 2 по ссылке в /web/stud/openup/inactivatesession.php в строке 13
- Как связать параметр несколько раз с MySQLI?
- Ошибка с пользовательской функцией PHP: никакая переменная не возвращается
- Подготовленное заявление MySQLi не выполняется
- var_dump результата дает нулевое значение. Но более глубокая проверка возвращает целое число
- WAMP и mysqli :: real_connect (): (HY000 / 2002)?
<?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();