我不确定之前是否曾询问过,但我们如何知道bind_result()收到的参数数量?我试图从数据库加载数据并使用bind_param。但是,我收到了这个错误:
警告:mysqli_stmt :: bind_result():绑定变量数没有 匹配C:\ path on line
中预准备语句中的字段数
以下是我的代码片段:
$id =1;
if($stmt=$conn->prepare("SELECT * FROM TABLE_A WHERE ID=?")){
$stmt->bind_param('i', $id);
$stmt->execute();
$stmt->bind_result($result_id, $b, $c,
$d, $e, $f, $g,
$h);
bind_result中的参数数量与TABLE_A中的列数相同。非常感谢帮助。谢谢!为^ U ^
答案 0 :(得分:0)
根据函数bind_result
的PHP手册中的this comment,仅当您指定了准备中的所有列时,才可以使用预准备语句。言。
当您使用SELECT * FROM
准备语句时,PHP不知道结果列的数量(您可以通过仅使用一个列变量尝试bind_result
来检查是否为真,并查看它是否成功)
因此,您必须在预准备语句中命名所有列(SELECT name,addr,col3, ...
)或使用上述注释中的变通方法 - 使用call_user_func_array
和result_metadata
创建自己的函数来获取返回的列的名称和计数。