我得到了这个:
警告:mysqli_stmt_bind_result()[function.mysqli-stmt-bind-result]:绑定变量数与预准备语句中的字段数不匹配
我在我的代码中定义了$ id和$ link,并且连接到数据库没有问题。
$query = "select * from tablename where id = ?";
if ($stmt = mysqli_prepare($link, $query)) {
mysqli_stmt_bind_param($stmt, 'i', $id);
//execute statement
mysqli_stmt_execute($stmt);
// bind result variables
mysqli_stmt_bind_result($stmt, $first, $last);
// fetch values
mysqli_stmt_fetch($stmt);
echo "$first $last<br>";
// close statement
mysqli_stmt_close($stmt);
}
在我看来,查询只有一个'?',所以它只需要填写一个(整数类型)值,我认为我提供$ id。帮助
答案 0 :(得分:1)
您必须将每个列名称放在SELECT中,而不是使用*
通配符Documentation。
示例强>
SELECT `FirstName`,`LastName` FROM `tablename` WHERE `id` = ?
错误说Number of bind variables doesn't match number of fields in prepared statement
。
在行mysqli_stmt_bind_result($stmt, $first, $last);
中,您尝试将两个变量($first
和$last
)绑定到$stmt
。但是,数据库中所选变量的数量必须等于您尝试为$stmt
分配的变量数量。你可以按照上面的说法做到这一点。
附注:我建议使用反引号`tables`
引用`columns`
和`
个名称。