我正在尝试创建一个简单的搜索栏,在我的数据库中搜索某些单词。可以在不使用WHERE的情况下使用LIKE属性吗?我希望它搜索所有列的关键字,而不只是一个。目前我有这个:
mysql_query("SELECT * FROM shoutbox WHERE name LIKE '%$search%' ")
显然只搜索带有搜索输入的名称。我尝试了这两个:
mysql_query("SELECT * FROM shoutbox LIKE '%$search%' ")
mysql_query("SELECT * FROM shoutbox WHERE * LIKE '%$search%' ")
并且都没有奏效。这是可能的还是有其他方法可以解决这个问题?
答案 0 :(得分:15)
没有捷径。您需要单独指定每个列。
SELECT * FROM shoutbox
WHERE name LIKE '%$search%'
OR foo LIKE '%$search%'
OR bar LIKE '%$search%'
OR baz LIKE '%$search%'
答案 1 :(得分:6)
你可能也想看看MATCH()函数,例如:
SELECT * FROM shoutbox
WHERE MATCH(`name`, `foo`, `bar`) AGAINST ('$search')
您还可以为此添加布尔模式:
SELECT * FROM shoutbox
WHERE MATCH(`name`, `foo`, `bar`) AGAINST ('$search') IN BOOLEAN MODE
您还可以获取相关性分数并添加FULLTEXT键以加快查询速度。
答案 2 :(得分:4)
有一条捷径! ;)
SELECT * FROM shoutbox
WHERE CONCAT(name, foo, bar, baz) LIKE '%$search%'
答案 3 :(得分:3)
这将不再显示重复的行。
SELECT * FROM shoutbox
WHERE (name LIKE '%$search%'
OR foo LIKE '%$search%'
OR bar LIKE '%$search%'
OR baz LIKE '%$search%')