使用登录系统,但我一直收到此错误
//$User = 'kv96';
//$Pass = 'passkv';
//echo isValidLogin($User, $Pass);
function isValidLogin($username, $password) {
$query = mysqli_query($link,"SELECT * FROM Log_in WHERE Password = '$Pass' AND User_ID ='$User'"); //Finds the database and chooses the row
//$result = mysqli_query($query);
$row = mysqli_fetch_array($result); //Fetches the row
if($row['User_ID'] != null && $row['Password'] != null){return true;}
else{return false;}
function getUsernameRole($username) {
return "instructor";
}
mysqli_close($link);
?>
有人可以解释为什么这个错误会弹出,我不明白为什么查询失败了?
答案 0 :(得分:0)
我注意到你注释掉了$result
但你用来获取数据库数组。您应该使用$query
,或者在//
之前删除2 $result
。
不仅如此,您忘记通过函数的参数解析$link
。因此查询将不会成功。
另一个问题是,您在查询中使用了$pass
和$user
变量,但是,您还没有通过函数的参数传递它们。您必须将$username
更改为$user
,依此类推..
我还将你的while循环改为行数。这将使您免于使用不必要的代码,并且更加实用;保存你做一个while循环并检查值是否返回null。
function isValidLogin($link, $user, $pass) { // parsing through the connection link and $user, $pass variables
$query = mysqli_query($link,"SELECT * FROM Log_in WHERE Password = '$Pass' AND User_ID ='$User'"); //Finds the database and chooses the row
$count = mysqli_num_rows($query);
if($count > 0){
return true;
} else {
return false;
}
}
我想提出的建议(强烈建议)是使用预准备语句来防止SQL注入,但是,你可以找到很多关于如何做的帖子。