我正在尝试创建一个很好的小搜索语句,根据返回的内容使用不同的搜索词搜索多个字段。如果找不到一个搜索词,我基本上会设置一个搜索顺序,然后尝试下一个搜索词。但是我使用 WHERE 子句来单独搜索一种类型的数据。目前我收到了一些奇怪的返回结果,因为我认为我的顺序不正确,似乎我的 WHERE 子句被忽略了。
这是我的声明(我使用的是 PHP):
mysql_query("SELECT * FROM item AS i LEFT JOIN country AS c ON i.country_id = c.country_id WHERE i.item_status = 'active' AND (i.item_name LIKE '%".$_SESSION['item']."%') OR i.item_description LIKE '%".$_SESSION['description']."%' OR i.item_name LIKE '%".$_SESSION['description']."%' ");
提前致谢。
最佳答案
为什么不使用全文搜索功能?
需要更改表结构以创建全文搜索索引。
ALTER TABLE item ADD FULLTEXT (item_name, item_description);
然后你的查询变成:
mysql_query("
SELECT * FROM item AS i LEFT JOIN country AS c ON i.country_id = c.country_id
WHERE i.item_status = 'active' AND
MATCH (i.item_name, i.item_description)
AGAINST (" . $_SESSION['item'] . " " . $_SESSION['description'] . ");
");
简单、准确、快速。
关于php - MySQL中如何在使用LIKE查询语句的同时使用OR语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3876811/