【发布时间】:2014-08-21 02:31:05
【问题描述】:
这个问题依赖于answer about using call_user_func_array 来动态生成 bind_param 语句,以及 php 手册中关于必须将引用的项目传递给 bind_param 语句的a user posting。但是,仍然存在一个问题:
PHP 警告:mysqli_stmt::bind_param(): 变量数不 匹配准备好的语句中的参数个数
代码如下:
$error_id_list = implode(',', array_fill(0, count($error_ids), '?'));
$type=""; for ($i=0; $i<count($error_ids); $i++){$type .= "i";}
$query = "SELECT `id`, `question`, `multi_1`, `multi_2`, `multi_3`, `multi_4` FROM `student_exam` WHERE `id` IN ('".$error_id_list."') ORDER BY RAND() LIMIT 0, 5";
$result = $mysqli->prepare($query);
if($result === FALSE)
die($result->error);
array_unshift($error_ids, $type);
call_user_func_array(array($result, 'bind_param'), refValues($error_ids));
$result->execute();
$result->store_result();
$result->bind_result($id,$question,$multi1,$multi2,$multi3,$multi4);
while($result->fetch()){
$output;
}
$result->free_result();
return $output;
谢谢!
【问题讨论】:
-
由于您没有显示您正在构建的查询字符串的外观或构建方式,因此我们无法真正帮助您。但很明显,
?参数与您尝试绑定到它们的变量不匹配。 -
对不起@MarcB,我会马上发布的
-
我可以看到这会变得混乱,您将如何设法为绑定参数分配正确的类型?我确定并非所有字段都是整数。最好放弃这个想法?
-
在这种情况下,所有变量总是整数。
标签: php mysqli prepared-statement