2011-08-21 78 views
0

這是什麼樣的錯誤,我的意思是,當更新字段,如果我使用'',我得到這個錯誤。未知的警告,而更新字段

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\Program Files\xampp\htdocs\shadaab\aaction.php on line 87

ON 86-87我有這個疑問

$result = mysql_query("SELECT name FROM album WHERE name='$name'"); 
if(mysql_num_rows($result) != 0) 
+0

你忘了你的錯誤檢查。爲什麼每個人都會忘記錯誤檢查? –

+1

[錯誤:警告:mysql_num_rows()的可能的重複期望參數1是資源,在第27行C:\ xampp \ htdocs \ messages.php中給出的布爾值](http://stackoverflow.com/questions/6936185/error -warning-mysql-num-rows-expects-parameter-1-to-resource-boolean-give)(更不用提半個_million_其他問題) –

回答

1

SO上很受歡迎的問題。這意味着您的查詢失敗,所以$resultfalse

添加

if (!$result){ 
    echo mysql_error(); 
} 

要看看究竟是什麼錯誤是什麼。很可能你在$name變量中有一些非法字符。因此,在將其嵌入查詢字符串之前,您需要mysql_escape_string()它。

$name= mysql_escape_string($name); 

順便說一句,你的代碼需要SQL注入。因此,您最好使用prepared_statements

+0

你怎麼知道的?什麼是'$ name'? –

+0

@john:使用mysql_real_escape_string警告消息不會發生。如果我使用相同的BUt查詢,則不會觸發。 – Aditii

+0

這只是一個假設。可以肯定的是,由於SQL錯誤,查詢失敗,唯一明顯的原因是'$ name'的值。它用單引號包裹,所以它應該是字符串。所有的PHP數據類型都被轉換爲字符串,這樣不會導致該查詢崩潰(數組變成'Array',對象變成'',資源 - 像'#Resource()'等等)。所以,最可能的'$ name'是一個字符串,它包含了一些使查詢崩潰的東西。如非轉義字符。它可能缺少表,缺少權限,刪除數據庫等。但最簡單的解釋是非轉義字符 – J0HN

1

正如documentation說:

For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error.

For other type of SQL statements, INSERT, UPDATE, DELETE, DROP, etc, mysql_query() returns TRUE on success or FALSE on error.

The returned result resource should be passed to mysql_fetch_array(), and other functions for dealing with result tables, to access the returned data.

Use mysql_num_rows() to find out how many rows were returned for a SELECT statement or mysql_affected_rows() to find out how many rows were affected by a DELETE, INSERT, REPLACE, or UPDATE statement.

mysql_query() will also fail and return FALSE if the user does not have permission to access the table(s) referenced by the query.

你應該檢查$result !== false第一。

1

mysql_query對錯誤返回false。這種替換第一行(如果你想知道錯誤):

mysql_query("SELECT name FROM album WHERE name='$name'") or die(mysql_error()); 
0

對於SELECT statements mysql_query()返回上失敗successFALSE的資源。檢查是否FALSE === $result