2011-04-13 56 views
0

Possible Duplicate:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL resultmysql_fetch_assoc():提供的參數不是一個有效的MySQL結果資源

我真的停留在此,我gettiing這個錯誤: mysql_fetch_assoc():提供的參數是不是一個有效的MySQL結果資源「文件名」

下面是代碼:

$sql = "SELECT * FROM $tbl_name WHERE.... 
$result=mysql_query($sql); 
$row = mysql_fetch_assoc($result); 

的奇怪的事情是,我以前使用完全相同的代碼和它工作得很好

任何想法??

+0

也許你的mysql表已經改變了,否則它很可能是在'$ sql =「TYPO SOMEWHERE HERE」中的一個錯誤的地方'' – Emmanuel 2011-04-13 08:31:56

+1

向我們展示了SQL查詢。 – hsz 2011-04-13 08:32:02

回答

4

這意味着查詢失敗。通常這是一個SQL語法錯誤。爲了找到答案,只是_fetch_assoc行前插入這一權利:

print mysql_error(); 

要防止錯誤信息,構造你的代碼像這樣事先檢查$結果:

$sql = "SELECT * FROM $tbl_name WHERE...."; 

if ($result = mysql_query($sql)) { 
    $row = mysql_fetch_assoc($result);   
} 
else print mysql_error(); 
0

這個錯誤一般是由於沒有數據從查詢返回。確保數據通過進入類似PHPMyAdmin的方式返回,並確保查詢返回一些行。您還應該添加

or die(mysql_error()); 

在查詢結束。

+3

每當有人延續'foo()或死()'模因,編碼神會殺死一個新手。請不要有人想到新手!? (*殺死你的腳本*當發生錯誤,沒有機會清理後自己是一個糟糕的設計和壞習慣進入。) – Charles 2011-04-13 08:38:41

+0

@Charles:另一方面,我們不願意新手死了嗎? :P – 2011-04-13 08:45:13

+0

對不起,我只是太習慣暴力調試:) – 2011-04-13 08:50:48

1

始終運行所有的疑問這樣

$sql = "SELECT * FROM $tbl_name WHERE...."; 
$res = mysql_query($sql) or trigger_error(mysql_error()." in ".$sql); 
$row = mysql_fetch_assoc($result); 

而且你將被告知錯誤的原因的。

但是從不打印或讓die()輸出任何錯誤,因爲它存在安全漏洞。

相關問題