Как устранить ошибку «не передать параметр по ссылке» в PHP? - PullRequest
10 голосов
/ 27 ноября 2011

Вот мой код:

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

Я пробовал это также:

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

Я получаю ошибку:

Неустранимая ошибка: ** Невозможно передать параметр 3 по ссылке в ** ... путь к файлу ... строка #

Обратите внимание, что CaptureTime и UploadeTime имеют тип данных дата . И игнорируйте тот факт, что я передаю значение 3-го и 4-го параметра одинаково.

Что не так с кодом?

Ответы [ 2 ]

27 голосов
/ 27 ноября 2011

Изменение

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

до

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

Я считаю, что вы должны передавать переменные, а не строку.

Или вы можете использовать bindvalue() вместо bindparam(), если используете PDO.

0 голосов
/ 27 ноября 2011

Может быть, вам нужно привести его в строку?

...$extension, (string) $captureTime, (string) $uploadTime);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...