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