当我返回查询时出现此错误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 %%
查询。我很高兴知道如何摆脱这个错误以及它为什么会发生
答案 0 :(得分: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
攻击,请花时间阅读以下文章,
答案 1 :(得分:1)
why it happened?
对于返回结果集的SELECT, 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 . "%'");