我试图验证用户登录的用户名和密码,但操作失败,我要求mysqli_query搜索来自登录表单的用户名和密码,但查询无法找到用户!当我使用var_dump和从mysqli_fetch_array传入的reuslt时,它返回bool(false)。
当我要求查询搜索名字或姓氏和密码时(我完全改变了sql语句)!它运作良好!!!所以,语法没有错误..一切都很好!如果我使用var_dump作为结果它返回结果数组的所有信息!并返回所有列,那么这里的问题是什么? (有些栏目已经阅读,有些栏目没有了)
这会返回bool(false):
public static function authenticate($UniqueUser="", $HashedPass=""){
global $database;
$user= $database-> escaped_string($UniqueUser);
$pass = $database-> escaped_string($HashedPass);
$sql = "SELECT * FROM Users ";
$sql .= " WHERE UniqueUser = \"{$user}\" ";
$sql .= " AND HashedPass = \"{$pass}\" ";
$sql .= " LIMIT 1";
$result = $database-> query($sql);
$result_set = $database-> fetch_array($result);
return !empty($result_set) ? array_shift($result_set) : false;
}
这很好用:
public static function authenticate($lastname="", $HashedPass=""){
global $database;
$user= $database-> escaped_string($lastname);
$pass = $database-> escaped_string($HashedPass);
$sql = "SELECT * FROM Users ";
$sql .= " WHERE LastName = \"{$user}\" ";
$sql .= " AND HashedPass = \"{$pass}\" ";
$sql .= " LIMIT 1";
$result = $database-> query($sql);
$result_set = $database-> fetch_array($result);
return !empty($result_set) ? array_shift($result_set) : false;
}
程序方式,它给了我同样的错误..这个函数给了我bool(假)
function authenticate ($user, $pass){
$sql = "SELECT * FROM Users ";
$sql .= " WHERE UserAcc = \"{$user}\" ";
$sql .= " AND HashedPass = \"{$pass}\" ";
$sql .= " LIMIT 1";
$result = mysqli_query($sql);
$result_set = mysqli_fetch_array($result);
return !empty($result_set) ? array_shift($result_set) : false;
}
这很好用!他们之间的区别我刚刚更改了sql列
function authenticate ($user, $pass){
$sql = "SELECT * FROM Users ";
$sql .= " WHERE LastName = \"{$user}\" ";
$sql .= " AND HashedPass = \"{$pass}\" ";
$sql .= " LIMIT 1";
$result = mysqli_query($sql);
$result_set = mysqli_fetch_array($result);
return !empty($result_set) ? array_shift($result_set) : false;
}