绑定参数到mysqli数据库查询

时间:2013-09-07 04:35:50

标签: php database mysqli

我得到了这个:

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

1 个答案:

答案 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``个名称。