得到这个错误 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 的 %%
。如果知道如何消除此错误以及为什么会发生,我将不胜感激
最佳答案
- 使用
CONCAT()
函数 - 在列名上使用反引号而不是单引号(但在这种情况下不需要,因为您的列名不是 reserved keyword 或者它不包含无效字符)<
查询,
SELECT * FROM tempusers
WHERE `firstname` LIKE CONCAT('%', '$data', '%')
OR `lastname` LIKE CONCAT('%', '$data', '%')
OR `description` LIKE CONCAT('%', '$data', '%')
OR `title` LIKE CONCAT('%', '$data', '%')
还有一件事,您的查询存在 SQL 注入(inject)
漏洞,请花时间阅读下面的文章,
关于php - Mysql_fetch_assoc() 使用 LIKE 对我的查询发出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13284133/