PHP和MySQL,call_user_func_array不能使用变量作为参数

时间:2016-04-17 12:03:00

标签: php mysqli

我正在尝试使用mysqli预处理语句设置动态MySQL查询。我需要将多个值(未知数量)与单个列进行比较。

以下作品:

$qs = '?,?';
$query = 'SELECT r_id FROM sometable WHERE someindex IN ('.$qs.')';
$statement = $db_conn->prepare($query);
call_user_func_array(array($statement, 'bind_param'), array('ss', 'Something', 'somethingelse'));

我从数据库中得到了一个结果,并且可以随意返回。但是,以下工作:

$qs = '?,?';
$query = 'SELECT r_id FROM sometable WHERE someindex IN ('.$qs.')';
$statement = $db_conn->prepare($query);
$test = array('ss', 'Something', 'something else');
call_user_func_array(array($statement, 'bind_param'), $test);

唯一不同的是分配$test,而不是直接在call_user_func_array内创建数组。

类似地:

$one = 'pizza';
$two = 'pie';
call_user_func_array(array($statement, 'bind_param'), array('ss', $one, $two));

工作。该声明甚至无法执行。

如果我不能将变量名直接放入语句中,我就无法进行动态查询。发生了什么事?有没有修复此问题,或者可能是另一种(同样简单)的方法,我可以在单个列上运行查询,具有未知数量的术语?引用或指针(即&$one)也不起作用。

2012年或之前,call_user_func_array似乎存在一些已知问题,但我找不到更新的内容。我使用的是PHP 5.5

编辑1

已知问题,早在2007年here

0 个答案:

没有答案