无法在 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 中通过引用传递参数 [重复]的主要内容,如果未能解决你的问题,请参考以下文章