mysqli_stmt::bind_result():绑定变量的数量与准备好的语句中的字段数量不匹配 [英] mysqli_stmt::bind_result(): Number of bind variables doesn't match number of fields in prepared statement
问题描述
我一直在尝试使用准备好的语句在 PHP 中编写登录表单,但每次尝试登录时都会出现以下错误:
I’ve been trying to code a login form in PHP using a prepared statement but every time I try to log in I get the following error:
mysqli_stmt::bind_result(): 绑定变量的数量与准备好的语句中的字段数量不匹配
mysqli_stmt::bind_result(): Number of bind variables doesn't match number of fields in prepared statement
这是我的代码:
<?php
$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();
谁能告诉我为什么会这样?
Can someone tell me why this is happening?
推荐答案
$mysqli->prepare("SELECT username, password FROM users WHERE username = ?");
$username = $_POST['name'];
$stmt->bind_param('s' ,$username);
$stmt->execute();
$stmt->bind_result($username, $password);
您的选择语法错误,正确的语法是SELECT field1, field2, field3 FROM TABLE WHERE field1 = ?AND field2 = ?
Your select syntax was wrong, the correct syntax is
SELECT field1, field2, field3 FROM TABLE WHERE field1 = ? AND field2 = ?
要选择更多字段,只需用逗号分隔它们,而不是 AND
To select more fields simply separate them by a comma and not an AND
这篇关于mysqli_stmt::bind_result():绑定变量的数量与准备好的语句中的字段数量不匹配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!