我在生成sql查询以以下格式搜索自动完成输入的城市时遇到麻烦。提示用户输入以下格式之一:
1 -城市2-城市,国家
3-城市,州
4-城市,州,国家
我的数据库表有以下结构
ID City State Country
当前正在使用的查询是(它不工作):
SELECT * FROM destinations WHERE City LIKE '%$city%' OR Country LIKE '%$country%' OR State LIKE '%$state%'
其中$city、$country和$state是通过将搜索词从带逗号的字符串转换为不带逗号的数组获得的。这样可以更好地说明:
$query = explode(',', $term);
$city = $query[0]; //and so on
请帮忙!我将非常感激。
更好的是全文搜索。
为什么这比%LIKE%好?
- 更快。
它是如何工作的?
Mysql遍历文本,研究其中的单词并维护一个单独的列表-哪些单词包含相同的文本。当你搜索这个文本字段时,mysql会进入单词列表,快速检查你要找的单词是否存在,并快速返回答案。
在%like%
的情况下,数据库将再次解析文本(从保存文本的文件中取出文本,解密字符串并执行缓慢的字符串比较)。
全文搜索只适用于Myisam表