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