首页 >后端开发 >php教程 >为什么 `mysqli_stmt::bind_result()` 在 PHP 登录表单中抛出'绑定不匹配”错误?

为什么 `mysqli_stmt::bind_result()` 在 PHP 登录表单中抛出'绑定不匹配”错误?

Barbara Streisand
Barbara Streisand原创
2024-12-24 03:49:27411浏览

Why Does `mysqli_stmt::bind_result()` Throw a

Mysqli_stmt::bind_result() 错误:绑定不匹配

当尝试使用准备好的语句实现 PHP 登录表单时,用户可能会遇到以下错误:

mysqli_stmt::bind_result(): Number of bind variables doesn't match number of fields in prepared statement

此错误表示之间存在差异bind_result() 中指定的变量数量以及准备好的语句返回的字段数量。要解决此问题,请检查以下代码片段:

$mysqli = new mysqli("localhost", "root", "", "security");

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

根本原因:

SELECT 语句中的错误语法是错误的根本原因。正确的语法应该是:

SELECT username, password FROM users WHERE username = ?

解决方案:

可以通过用逗号而不是“AND”分​​隔 SELECT 语句中的字段来解决该问题。 ”下面提供了正确的代码:

$mysqli->prepare("SELECT username, password FROM users WHERE username = ?");

通过确保 SELECT 语句中的语法正确并观察绑定变量的数量与准备好的语句中的字段数量匹配,mysqli_stmt::bind_result() 错误是可以预防的。

以上是为什么 `mysqli_stmt::bind_result()` 在 PHP 登录表单中抛出'绑定不匹配”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

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