2012-07-10 51 views
-1

可能重复:
PHP Error: mysql_fetch_array() expects parameter 1 to be resource, boolean givenmysql_fetch_assoc()预计参数1是资源,布尔在PHP中的错误给出

我得到了在PHP下述代码以下错误:


警告:mysql_fetch_assoc()预计参数1是资源,在布尔/Users/pubs/Sites3/parse/includes/parseAuthorSearch.php给定线

警告:mysql_fetch_assoc()预计参数1是在/Users/pubs/Sites3/parse/includes/parseAuthorSearch.php给定的资源,布尔线

function findExactAuthorMatch($firstname, $lastname) 
{ 
    $query22 = "SELECT COUNT(*) FROM authors WHERE lastname='".$lastname."' AND firstname='".$firstname."'";  
    $result22 = mysql_query($query22); 
    $count22 = mysql_fetch_assoc($result22); 
    if($count22 == 0) return false; 
    else return true; 
} 
+1

[我不知道为什么人们还在回答这些问题](http://stackoverflow.com/searchq =%5Bphp%5D + Warning%3A + mysql_fetch_assoc%28%29 +期望+参数+ 1 +到+ be +资源%2C +布尔+给定+中) – 2012-07-10 20:30:02

+0

可能的SQL注入。 – kapa 2012-07-11 10:18:50

回答

1

您的查询是错误的,请尝试在PHPMyAdmin或其他程序中执行它,或尝试回显它并查看它是否一致。

1

它看起来像你的mysql_query调用返回false(布尔),然后你打电话mysql_fetch_assoc没有检查它是有效的。

试试这个:

$result22 = mysql_query($query22) or die('Invalid MySQL query: ' . mysql_error()); 

,将告诉你查询不治。

0

这意味着您之前致电mysql_query()的电话号码返回false,因此没有取得结果。这发生在查询出错时,例如语法错误。

在这种情况下,你将要检查是否$result22false,然后看看有什么mysql_error()不得不说:

if ($result22 === false) { 
    echo mysql_error(); 
    return false; 
} 
1
  • 你不应该使用mysql_ *功能更多
  • 你永远不应该直接将变量放入一个查询;请参阅相应API可用的各种转义函数。在这种情况下,使用mysql_real_escape_string
  • 要查看您的查询的错误,这样做:

    如果(!$ result22){ 模具(mysql_error()); }

相关问题