14

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?

Kumar Kush
  • 2,495
  • 11
  • 32
  • 42
  • 1
    reference for you: this issue has similar problem http://stackoverflow.com/questions/13105373/php-error-cannot-pass-parameter-2-by-reference – Yoshi Jan 29 '15 at 08:56

2 Answers2

33

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.

Phantom
  • 378
  • 3
  • 19
Kevin Vandenborne
  • 1,397
  • 1
  • 10
  • 28
-2

Maybe you need to cast it to string?

...$extension, (string) $captureTime, (string) $uploadTime);
Stijn Leenknegt
  • 1,317
  • 4
  • 12
  • 22