MySQLi 准备语句中的绑定变量不匹配
当尝试在 PHP 中使用准备语句实现登录表单时,一些开发人员遇到了令人沮丧的问题错误:“mysqli_stmt::bind_result():绑定变量的数量与准备好的字段数量不匹配语句。”
当 SQL 查询和 bind_result() 函数选择并分配给变量的字段数量不匹配时,就会出现此错误。让我们根据提供的代码来看看如何解决这个问题。
在提供的代码中:
$stmt = $mysqli->prepare("SELECT username AND password FROM users WHERE username = ?"); $stmt->bind_param('s', $username); $stmt->execute(); $stmt->bind_result($password, $username);
问题出在 SQL 查询上。选择多个字段时,使用“AND”关键字代替逗号。选择多个字段的正确语法是用逗号分隔它们:
$stmt = $mysqli->prepare("SELECT username, password FROM users WHERE username = ?");
此外,bind_result() 函数应与所选字段的数量匹配。在这种情况下,选择了两个字段,因此bind_result()函数应该有两个变量:
$stmt->bind_result($username, $password);
通过更正选择语法并将bind_result()函数与所选字段的数量对齐,问题不匹配的绑定变量将得到解决,从而使登录表单能够正常运行。
以上是为什么我的 MySQLi 准备语句抛出'绑定变量数量与字段数量不匹配”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!