【问题标题】:How to resolve 'cannot pass parameter by reference' error in PHP? [duplicate]如何解决 PHP 中的“无法通过引用传递参数”错误? [复制]
【发布时间】:2012-01-07 10:11:11
【问题描述】:

这是我的代码:

$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 在 **...文件路径...行 #

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

代码有什么问题?

【问题讨论】:

标签: php mysqli


【解决方案1】:

也许您需要将其转换为字符串?

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

【讨论】:

    【解决方案2】:

    改变

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

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

    我相信你必须传递变量而不是字符串。

    或者,如果您使用 PDO,则可以使用 bindvalue() 而不是 bindparam()

    【讨论】:

    • 你确定mysqli语句支持bindvalue function()吗?在 php.net 上的 mysqli manaul 中,我没有看到那个函数。
    • 啊,不。只有 PDO 似乎支持它。我以为 MySQLi 也是。
    猜你喜欢
    • 2018-02-21
    • 2012-10-17
    • 2017-07-24
    • 2011-10-25
    • 1970-01-01
    • 2013-03-07
    • 2013-01-12
    相关资源
    最近更新 更多