0

我得到这个:

警告: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。帮助?

4

1 回答 1

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`名称`

于 2013-09-07T04:38:59.217 回答