所以我试图使用 mysqli 查询检查用户是否被禁止,但它似乎总是返回该用户被禁止。即使它们没有被禁止。
user_banned 功能
function user_banned ($con, $username) {
$data = $username;
$username = sanitize($data, $con);
$username = $data;
mysqli_query($con, "SELECT `banned` FROM `users` WHERE `username` = '$username'");
return(mysqli_affected_rows($con) == 1) ? true : false;
}
调用函数的地方:
$username = $_POST['username'];
$password = $_POST['password'];
if (user_banned($con, $username) === true ) {
$errors[] = 'You are banned, contact an admin.';
}
我已经回显了 $username,它是正确的用户名,所以这不是问题。
TL;dr 函数由于某种原因总是返回 true。
最佳答案
mysqli_affected_rows()
用于插入和更新。您需要 mysqli_num_rows()
。
如果碰巧有超过 1 行,您当前的逻辑将返回 false,因此这可能更有意义:
return(mysqli_affected_rows($con) != 0) ? true : false;
//or even
return (bool)mysqli_affected_rows($con);
还有,这是什么鬼?它绝对没有任何作用。
$data = $username;
$username = sanitize($data, $con);
$username = $data;
关于php - Mysql查询总是返回true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29520763/