我一直在尝试使用准备好的语句在PHP中编写登录表单,但是每次尝试登录时,都会出现以下错误:
mysqli_stmt :: bind_result():绑定变量的数量与准备好的语句中的字段数量不匹配
这是我的代码:
<?php
session_start();
$mysqli = new mysqli("localhost", "root" , "" , "security");
if(mysqli_connect_errno()){
echo "Wrong" ;
}
if($stmt = $mysqli->prepare("SELECT username AND password FROM users WHERE username =? AND password =?")){
$username = $_POST['name'];
$password = $_POST['password'];
$stmt->bind_param('ss' ,$username ,$password);
$stmt->execute();
$stmt->bind_result($password ,$username);
if($stmt->fetch() == 'true')
{
echo "welcome";
} else{
echo "wrong password";
}
}
?>
有人可以告诉我为什么会这样吗?
如果这确实是您的代码,则可能是$ _POST [“ name”]或$ _POST [“
password”]是一个数组,因此bind_param绑定的不只是一个值。
校验:
var_dump($_POST["name"]);
var_dump($_POST["password"]);
首先,我知道这是一个重复的问题,我问的是同样的问题。但是我已经阅读了所有与相同问题相关联的解决方案,但是当我遵循建议的解决方案时,它将触发更多的警告出现。这就是我的代码 获取 只为得到这些警告; 警告:mysqli_stmt::bind_param():第119行C:\xampp\htdocs\gsd\emergency\records.php中的变量数与准备好的语句中的参数数不匹配 警告:mys
我在prepare语句和bind_param中有正确的数字(7),所以我不知道为什么会发生这种情况。
问题内容: 因此,我需要执行大量令人头痛的查询,涉及到需要使用mysqli预准备语句将 65个 表单输入注入数据库的查询。 我遇到的问题是它说我尝试调用的变量数与我正在使用的“ s”数不匹配。 我数了十二遍 ,看不到我要去哪里错了。有65个变量和65个“ s”。 谁能看到我想念的东西?还是我可能以错误的方式使用bind_param方法? 问题答案: 字符串中的字符不应用逗号分隔: 您可以在手册页的
我得到这个错误:
我正在使用编写我认为是相当基本的准备好的状态。语句如下所示(其中是实例): 这将失败,在中的参数数不匹配。