2011-04-13 52 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()输出任何错误,因为它存在安全漏洞。

相关问题