无法在 MySQLi 中通过引用传递参数 [重复]

Posted

技术标签:

【中文标题】无法在 MySQLi 中通过引用传递参数 [重复]【英文标题】:Cannot pass parameter by reference in MySQLi [duplicate] 【发布时间】: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 传入绑定调用。您不能引用常量。 【参考方案1】:

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

【讨论】:

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

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

【讨论】:

以上是关于无法在 MySQLi 中通过引用传递参数 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在C中通过引用传递一个char数组

在静态类方法中通过引用传递参数

在 C++ 中通过引用传递时参数的默认值

有没有办法在函数调用中通过引用传递和通过值显式传递?

在 C 中通过引用传递字符串

在函数c ++中通过引用传递的指针参数