2013-05-15 69 views
0

我知道了類似的問題已經回答了,但我的情況下,我沒有使用布爾我得到這個錯誤警告:mysql_num_rows()預計參數1是資源,在給定的空(不是布爾)

警告:mysql_num_rows()預計參數1是資源,在/home3/arm103/public_html/battle.php空給出第19行

這裏是從第1行至battle.php 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']; 

這將是偉大的,如果有人能告訴我的問題,謝謝

+0

可能重複的[mysql \ _fetch \ _array()期望參數1是資源,布爾給出在選擇](http://stackoverflow.com/questions/2973202/mysql-fetch -array-expect-parameter-1-to-resource-boolean-given-in-select) –

+0

'$ attacks_check'從哪裏來? :) –

回答

2

$attacks_check沒有定義,因此爲空。您需要將其初始化爲資源,然後才能將其作爲參數傳遞給mysql_num_rows()

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

作爲一個側面說明,請注意,mysql_*功能支持的mysqli或PDO的棄用。請考慮更新您的代碼以提高安全性和穩定性。

+0

對不起,這篇文章可以刪除,現在感謝喬治康明斯解釋它在我的情況 – Aidan

2

mysql_ *函數沒有更多的支持,它們被官方棄用,不再維護,將來會被刪除。您應該使用PDO或MySQLi更新您的代碼,以確保您的項目未來的功能。

您正在引用未定義的變量$attacks_check未指定,因此爲空。

0

您使用$attack_check但它不是definied

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

這導致了錯誤,因爲變量是空

那麼我想你要記住,mysql_*功能已被棄用,所以我勸你切換到mysqliPDO

相關問題