2011-11-27 5 views
8

は私のコードです: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 **...file path...line #

CaptureTimeUploadeTimeを持っていることに注意してくださいデータ型。私は3番目と4番目のパラメータの値を渡しているという事実を無視してください。

コードに問題がありますか?

+0

[PHP mysqli wrapper:__call()とcall_user_func_array()で参照渡し可能(http://stackoverflow.com/questions/2566289/php-mysqli-wrapper-passing-by-reference-with- call-and-call-user-func-array) – ajreal

+0

リファレンス:この問題の問題は似ています http://stackoverflow.com/questions/13105373/php-error-cannot-pass-parameter-2-参照によって – Yoshi

+0

[PHPエラー: "参照でパラメータ2を渡すことができません"](https://stackoverflow.com/questions/13105373/php-error-cannot-pass-parameter-2-by-reference) –

答えて

24

変更

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

私はあなたが変数ではなく、文字列を渡すために持っていると信じています。

また、PDOを使用している場合はbindparam()の代わりにbindvalue()を使用できます。

+0

ありがとうございました。それはうまくいった。 –

+0

mysqli文が** bindvalue ** function()をサポートしていますか? php.netのmysqli manaulでは、私はその機能を見ていません。 –

+0

ああ、いいえ。 PDOだけがそれをサポートしているようです。私はMySQLiもやったと思った。 –

-1

多分それを文字列にキャストする必要がありますか?

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

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

私はそれを試みた。動作しませんでした。私はブラウザのキャッシュもクリアしました。 –

関連する問題