0

mysql_fetch_assoc() expects parameter 1 to be resource, boolean given返回查询时出现此错误

$query = mysql_query("SELECT * FROM tempusers
    WHERE 'firstname' LIKE '%$data%' 
    OR 'lastname' LIKE '%$data%'
    OR 'description' LIKE '%$data%'
    OR 'title' LIKE '%$data%'");

if (! $query){
    echo'Database error: ' . mysql_error();
}
while($row=mysql_fetch_assoc($query)){
    $description = $row['description'];
    echo $description;
}

具体来说,while循环。不明白为什么我会得到。我想这是因为我使用了 LIKE,我不确定wildcard's %%我的查询是否正确使用。我将不胜感激知道如何摆脱这个错误以及它发生的原因

4

2 回答 2

4
  • 使用CONCAT()功能
  • 在列名上使用反引号而不是单引号(但在这种情况下,它不是必需的,因为您的列名不是保留关键字或者它不包含无效字符

询问,

SELECT * FROM tempusers
WHERE  `firstname` LIKE CONCAT('%', '$data', '%')
    OR `lastname` LIKE CONCAT('%', '$data', '%')
    OR `description` LIKE CONCAT('%', '$data', '%')
    OR `title` LIKE CONCAT('%', '$data', '%')

还有一件事,您的查询很容易受到攻击SQL Injection,请花点时间阅读下面的文章,

于 2012-11-08T07:08:52.927 回答
1
why it happened?

ForSELECT, SHOW, DESCRIBE, EXPLAIN和其他返回结果集的语句,mysql_query()成功或FALSE错误时返回资源
此外,对于mysql_fetch_assoc(),参数必须是适当的资源,而不是像FALSE这种情况下的对象。

How to rid of this error? 

由于错误是由于您的查询执行返回FALSE,这可能是解决方案。

$query = mysql_query("SELECT * FROM `tempusers`
        WHERE `firstname` LIKE '%" . $data . "%'
        OR `lastname` LIKE '%" . $data . "%'
        OR `description` LIKE '%" . $data . "%'
        OR `title` LIKE '%" . $data . "%'");
于 2012-11-08T07:23:36.657 回答