use*_*387 16 mysql where sql-like
我正在尝试创建一个简单的搜索栏,在我的数据库中搜索某些单词.可以在不使用WHERE的情况下使用LIKE属性吗?我希望它搜索所有列的关键字,而不只是一个.目前我有这个:
mysql_query("SELECT * FROM shoutbox WHERE name LIKE '%$search%' ")
Run Code Online (Sandbox Code Playgroud)
显然,只搜索带有搜索输入的名称.我试过这两个:
mysql_query("SELECT * FROM shoutbox LIKE '%$search%' ")
mysql_query("SELECT * FROM shoutbox WHERE * LIKE '%$search%' ")
Run Code Online (Sandbox Code Playgroud)
并没有奏效.这是可能的,还是有另一种方法可以解决这个问题?
JJJ*_*JJJ 15
没有捷径.您需要单独指定每个列.
SELECT * FROM shoutbox
WHERE name LIKE '%$search%'
OR foo LIKE '%$search%'
OR bar LIKE '%$search%'
OR baz LIKE '%$search%'
Run Code Online (Sandbox Code Playgroud)
您可能还想查看MATCH()函数,例如:
SELECT * FROM shoutbox
WHERE MATCH(`name`, `foo`, `bar`) AGAINST ('$search')
Run Code Online (Sandbox Code Playgroud)
您还可以为此添加布尔模式:
SELECT * FROM shoutbox
WHERE MATCH(`name`, `foo`, `bar`) AGAINST ('$search') IN BOOLEAN MODE
Run Code Online (Sandbox Code Playgroud)
您还可以获取相关性分数并添加FULLTEXT键以加快查询速度.
小智 5
有捷径!;)
SELECT * FROM shoutbox
WHERE CONCAT(name, foo, bar, baz) LIKE '%$search%'
Run Code Online (Sandbox Code Playgroud)