0

我知道已经回答了类似的问题,但是在我的情况下,我没有使用布尔值,但出现此错误

警告:mysql_num_rows() 期望参数 1 是资源,在第 19 行的 /home3/arm103/public_html/battle.php 中给出 null

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

<?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'];

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

4

3 回答 3

2

$attacks_check未定义,因此为空。您需要先将其初始化为资源,然后才能将其作为参数传递给mysql_num_rows().

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

作为旁注,请注意这些mysql_*函数已弃用,有利于 mysqli 或 PDO。请考虑更新您的代码以提高安全性和稳定性。

于 2013-05-15T20:54:39.327 回答
2

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

您引用的变量未定义$attacks_check未分配,因此为空。

于 2013-05-15T20:55:22.503 回答
0

您使用$attack_check但未定义

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

这导致错误,因为变量为空

然后我希望您记住这些mysql_*功能已被弃用,因此我建议您切换到mysqliPDO

于 2013-05-15T20:55:32.253 回答