如何解析'不能通过引用传递参数'PHP错误


How to resolve 'cannot pass parameter by reference' error in 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'));

我也试过了:

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

我得到错误:

Fatal error:** Cannot pass parameter 3 by reference in **…文件路径…行#

请注意CaptureTimeUploadeTime具有数据类型date。忽略我传递第三个和第四个参数的值相同的事实。

代码有什么问题?

变化

$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。

也许您需要将其强制转换为string?

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