mysqli_stmt::bind_result():绑定变量的数量与准备好的语句中的字段数量不匹配 [英] mysqli_stmt::bind_result(): Number of bind variables doesn't match number of fields in prepared statement

查看:22
本文介绍了mysqli_stmt::bind_result():绑定变量的数量与准备好的语句中的字段数量不匹配的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在尝试使用准备好的语句在 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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆