How to resolve 'cannot pass parameter by refer

2020-02-06 06:05发布

Here's my code:

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

I have tried this also:

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

I am getting the error:

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

Please note that CaptureTime and UploadeTime have datatype date. And ignore the fact that I am passing the value of 3rd and 4th parameter same.

What's wrong with the code?

标签: php mysqli
2条回答
Summer. ? 凉城
2楼-- · 2020-02-06 06:18

Change

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

to

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

I believe you have to pass variables rather than a string.

Or you could use bindvalue() instead of bindparam() if you're using PDO.

查看更多
手持菜刀,她持情操
3楼-- · 2020-02-06 06:26

Maybe you need to cast it to string?

...$extension, (string) $captureTime, (string) $uploadTime);
查看更多
登录 后发表回答