不能将字符串参数绑定到mysql预处理语句(php)


Can't bind string params to mysqli prepared statement (php)

我在将字符串参数绑定到语句时遇到麻烦。我使用这个示例代码:http://php.net/manual/en/mysqli-stmt.bind-param.php#106402

现在我正在尝试使用该函数将参数绑定到语句。

绑定整数可以正常工作:

iQuery("SELECT * FROM sometable WHERE somecol=?", array('i', 123));

这样的字符串也可以:

iQuery("SELECT * FROM sometable WHERE someothercol=?", array('s', 'foo'));

然而,这不起作用:

$value = 'foo';
iQuery("SELECT * FROM sometable WHERE someothercol=?", array('s', $value));
// Error message:  Parameter 3 to mysqli_stmt::bind_param() expected to be a reference, value given
// (Occurs at the $method->invokeArgs line)

当我在$val周围加上引号时,它不会给出错误,但没有返回行。

有谁知道是什么原因造成的,我该如何解决我的问题?


更新/解决方案:

好的,知道了!我应该更好地阅读这条信息和样本。解决方法是添加&

$value = 'foo';
iQuery("...", array('s'), &$value);

好吧,既然你使用不同的变量名,难怪:

$value = 'foo';
^^^^^^---full name
iQuery("..snip...", array('s', $val));
                                ^^^^---undefined var here