警告:mysql_num_rows()期望参数1为resource, null(不是布尔值)


Warning: mysql_num_rows() expects parameter 1 to be resource, null given in (not a boolean)

我知道一个类似的问题已经回答,但我的情况下,我不使用布尔值,我得到这个错误

警告:mysql_num_rows()期望参数1为resource, null,在/home3/arm103/public_html/battle.php第19行

这里是battle.php从第1行到第25行

<?php
session_start();
include("header.php");
if(!isset($_SESSION['uid'])){
    echo "You must be logged in to view this page!";
}else{
  if(isset($_POST['gold'])) {
    $energy = protect($_POST['energy']);
    $id = protect($_POST['id']);
    $user_check = mysql_query("SELECT * FROM `stats` WHERE `id`='".$id."'") or        die(mysql_error());
if(mysql_num_rows($user_check) ==0) {
  output("There is no user with that ID!");
}elseif($energy < 1 || $energy > 10) {
  output("You must attack with 1 - 10 energy!");
}elseif($energy > $stats['energy']){
  output("You do not have enough energy!");
}elseif($id == $_SESSION['uid']) {
  output("You can not attack yourself!");
}elseif(mysql_num_rows($attacks_check) > 9) {
  output("This person has been already attacked the maximum of 10 times in the last 24 hours!");
}else{
    $enemy_stats = mysql_fetch_assoc($user_check);
    $attack_effect = $energy * 0.1 * $stats['attack'];
    $defence_effect = $enemy_stats['defence'];

如果有人能告诉我这个问题就太好了,谢谢

$attacks_check未定义,因此为null。在将其作为参数传递给mysql_num_rows()之前,您需要将其初始化为资源。

}elseif(mysql_num_rows($attacks_check) > 9) {

作为旁注,请注意mysql_*函数已被弃用,而支持mysqli或PDO。请考虑更新您的代码以提高安全性和稳定性。

不再支持mysql_*函数,它们已被正式弃用,不再维护,并将在将来删除。你应该用PDO或MySQLi更新你的代码,以确保你的项目在未来的功能。

您正在引用一个未定义的变量,$attacks_check未分配,因此为null。

您使用了$attack_check,但没有定义

}elseif(mysql_num_rows($attacks_check) > 9) {

由于变量为空,因此导致错误

然后我希望你记住mysql_*函数已被弃用,所以我建议你切换到mysqliPDO