mysql_connect ejemplo conexion clase php mysql pdo mysqli

ejemplo - Error de PHP: "No se puede pasar el parámetro 2 por referencia"



mysqli vs mysql (2)

Solo necesito ayuda con este error de PHP que no entiendo del todo:

Error fatal: no se puede pasar el parámetro 2 por referencia en /web/stud/openup/inactivatesession.php en la línea 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(); ?>

¿Qué significa este error? ¿Cómo se puede corregir este error?


El error significa que se espera que el segundo argumento sea una referencia a una variable .

Como no está entregando una variable sino un número entero de valor 0 , genera dicho error.

Para eludir esto, haz lo siguiente:

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

En caso de que desee comprender lo que está sucediendo, en lugar de simplemente corregir su Fatal error , lea esto: http://php.net/manual/en/language.references.pass.php


En primer lugar, no debe usar DATE_FORMAT cuando quiera comparar la fecha porque DATE_FORMAT ya no la cambia a cadena sin fecha ,

UPDATE Session SET Active = ? WHERE SessionDate <= ?

Segundo, almacene el valor primero en una variable y páselo al parámetro

$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();