一尘不染

mysqli_stmt :: bind_result():绑定变量的数量与准备好的语句中的字段数量不匹配

mysql

我一直在尝试使用准备好的语句在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";
    }
}
?>

有人可以告诉我为什么会这样吗?


阅读 287

收藏
2020-05-17

共1个答案

一尘不染

如果这确实是您的代码,则可能是$ _POST [“ name”]或$ _POST [“
password”]是一个数组,因此bind_param绑定的不只是一个值。

校验:

var_dump($_POST["name"]);
var_dump($_POST["password"]);
2020-05-17