首页 >后端开发 >php教程 >当绑定变量的数量与结果集列不匹配时,为什么`mysqli_stmt::bind_result()`会抛出错误?

当绑定变量的数量与结果集列不匹配时,为什么`mysqli_stmt::bind_result()`会抛出错误?

Susan Sarandon
Susan Sarandon原创
2024-12-11 09:01:09204浏览

Why Does `mysqli_stmt::bind_result()` Throw an Error When the Number of Bind Variables Doesn't Match the Result Set Columns?

mysqli_stmt::bind_result() 中的绑定变量不匹配

在 PHP 中,当使用 mysqli_stmt::bind_result() 执行准备好的语句时,绑定变量的数量必须与结果集中的字段数量相对应。如果它们不匹配,则会抛出错误“mysqli_stmt::bind_result(): Number of Bind Variable does not match number of fields in prepared statements”。

要解决此问题,请确保该数量bind_result() 中的绑定变量的数量与查询返回的列数一致。考虑以下 PHP 代码:

$stmt = $mysqli->prepare("SELECT username, password FROM users WHERE username = ?");
$username = $_POST['name'];
$stmt->bind_param('s', $username);
$stmt->execute();
$stmt->bind_result($password, $username); // Incorrect number of bind variables
$stmt->fetch();

在此示例中,准备好的语句检索两列:用户名和密码。然而,bind_result() 中只指定了一个绑定变量 $username。要更正此问题,请为 $password 添加第二个绑定变量:

$stmt->bind_result($username, $password); // Correct number of bind variables

SELECT 语句的语法为: SELECT field1, field2, ... fieldN FROM table_name WHERE .... 每个字段必须分隔开用逗号,而不是 AND 条件。

以上是当绑定变量的数量与结果集列不匹配时,为什么`mysqli_stmt::bind_result()`会抛出错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn