【问题标题】:Cannot pass parameter by reference in MySQLi [duplicate]无法在 MySQLi 中通过引用传递参数 [重复]
【发布时间】:2011-07-31 00:08:23
【问题描述】:

我试图将一个字符串传递给我的 MySQLi 准备语句,但它给了我错误:

不能在 MySQLi 中通过引用传递参数

以下是相关代码:

$kv = json_encode(array($key => $value));
$stmt->prepare("insert into rules (application_id, ruletype, rule_name, rule_info) values (?, ?, ?, ?);");
$stmt->bind_param('iiss', $application_id, 1, $config_name, $kv);

【问题讨论】:

  • 为什么不简单地将'1' 直接嵌入到查询中?如果它是静态值,则将其设为绑定参数是没有意义的。否则,只需执行$one = 1;,然后将$one 传入绑定调用。您不能引用常量。

标签: php mysql binding mysqli prepared-statement


【解决方案1】:

'1' 不能通过引用传递,因为它不是变量而是文字。您需要创建一个具有上述值的变量并将其绑定,因为bind_param() 函数需要通过引用传递的变量。

【讨论】:

  • 注意第一个字符串不是参数,是类型规范字符,见php.net/manual/en/mysqli-stmt.bind-param.php
  • 是的,你是对的,我的错 - 我浏览了这个问题并注意到 OP 没有将参数作为变量传递。我将根据您的输入编辑答案。
【解决方案2】:

检查$config_name 参数。 '1' 不作为引用传递

【讨论】:

    猜你喜欢
    • 2014-03-17
    • 2013-01-12
    • 1970-01-01
    • 2017-03-21
    • 2013-05-16
    • 1970-01-01
    • 2018-02-21
    • 2013-01-14
    相关资源
    最近更新 更多