2011-11-27 20 views
8

Aquí está mi código:¿Cómo se resuelve el error "no se puede pasar el parámetro por referencia" en PHP?

$stmt = $conn->mysqli->prepare('INSERT INTO photos (CaseNo, ImageName, CaptureTime, UploadTime) VALUES (?,?,?,?)'); 
$stmt->bind_param('isss', $caseno, $index.'.'.$extension, date('Y-m-d H:i:s'), date('Y-m-d H:i:s')); 

He intentado esto también:

$stmt = $conn->mysqli->prepare('INSERT INTO photos (CaseNo, ImageName, CaptureTime, UploadTime) VALUES (?,?,?,?)'); 
$captureTime = date('Y-m-d H:i:s'); 
$uploadTime = date('Y-m-d H:i:s'); 
$stmt->bind_param('isss', $caseno, $index.'.'.$extension, $captureTime, $uploadTime); 

estoy consiguiendo el error:

Fatal error:** Cannot pass parameter 3 by reference in **...file path...line #

Tenga en cuenta que CaptureTime y UploadeTime tienen tipo de datos fecha. E ignore el hecho de que estoy pasando el valor del 3 ° y 4 ° parámetro igual.

¿Qué pasa con el código?

+0

posible duplicado de [PHP mysqli wrapper: pasar por referencia con __call() y call_user_func_array()] (http://stackoverflow.com/questions/2566289/php-mysqli-wrapper-passing-by-reference-with- call-and-call-user-func-array) – ajreal

+0

referencia para usted: este problema tiene un problema similar http://stackoverflow.com/questions/13105373/php-error-cannot-pass-parameter-2- por referencia – Yoshi

+0

Posible duplicado de [Error PHP: "No se puede pasar el parámetro 2 por referencia"] (https://stackoverflow.com/questions/13105373/php-error-cannot-pass-parameter-2-by-reference) –

Respuesta

24

Cambio

$stmt->bind_param('isss', $caseno, $index.'.'.$extension, $captureTime, $uploadTime); 

a

$isss = 'isss'; 
$indexExtention = $index.'.'.$extension 
$stmt->bind_param($isss, $caseno, $indexExtention , $captureTime, $uploadTime); 

yo creo que tiene que pasar variables en lugar de una cadena.

O puede utilizar bindvalue() en lugar de bindparam() si está utilizando PDO.

+0

Muchas gracias. Eso funciono. –

+0

¿Estás seguro de que la instrucción mysqli admite la función ** bindvalue **()? En mysqli manaul en php.net, no veo esa función. –

+0

Ahh, no. Solo PDO parece apoyarlo. Pensé que MySQLi también lo hizo. –

-1

¿Quizás necesites echarlo a la cuerda?

...$extension, (string) $captureTime, (string) $uploadTime); 
+0

Intenté eso. No funcionó. Borré la memoria caché del navegador también. –

Cuestiones relacionadas