好吧,基本上是错误:
警告:mysqli_num_rows()要求参数1是中给定的对象mysqli_result
这是我的代码:
function user_banned ($con, $username) {
$result = mysqli_query($con, "SELECT `banned` FROM `users` WHERE `username` = '$username'");
return(mysqli_num_rows($con) == 1) ? true : false;
}
我不太确定是什么原因造成的,我已经看到了关于这个问题的几个问题,但没有一个问题帮助我找到解决这个问题的方法。
您应该在where
子句中添加一个额外的列:例如AND banned='yes'
。
另外,您在中使用了错误的变量
return(mysqli_num_rows($con) == 1) ? true : false;
您需要使用查询变量,而不是连接
return(mysqli_num_rows($result) == 1) ? true : false;
这解释了最初的错误:
警告:mysqli_num_rows()要求参数1为…中给定的对象mysqli_result
过程样式int mysqli_num_rows(mysqli_result$result)
http://php.net/manual/en/mysqli-result.num-rows.php
你正在通过应该是的通道
return(mysqli_num_rows($result) == 1) ? true : false;
试试这个:
function user_banned ($con, $username) {
$result = mysqli_query($con, "SELECT `banned` FROM `users` WHERE `username` = '$username'");
return(mysqli_num_rows($result) == 1) ? true : false;
}
您是否尝试在mysqli_num_rows中使用$result而不是$con?
function user_banned ($con, $username) {
$result = mysqli_query($con, "SELECT `banned` FROM `users` WHERE `username` = '$username'");
return(mysqli_num_rows($result) == 1) ? true : false;
}
您还应该检查与数据库的连接是否良好。
如果不想传入连接,则需要传入查询结果。
function user_banned ($con, $username) {
$result = mysqli_query($con, "SELECT `banned` FROM `users` WHERE `username` = '$username'");
return(mysqli_num_rows($con) == 1) ? true : false;
}
需要退货:
return (musqli_num_rows($result) == 1) ? true : false;
你的错误正说明了这一点。它正在寻找mysqli_result
而不是object
您的实际错误是基于返回true的情况,因为您使用了错误的查询。我将以您返回的select为例,并说:SELECT 'banned' from 'users' WHERE 'username' = '$username' AND 'banned' IS TRUE
这当然是假设被禁止的是一个bool,而不是字符串、bit、int等。