【发布时间】:2015-09-03 15:41:42
【问题描述】:
我正在为一个项目使用 jQuery Autocomplete 插件 1.1。
这是我的调用代码:
$("#txtCombo").autocomplete("http://www.example.com/autocomplete.php", {
autoFill: false,
width: 550,
minChars: 3,
selectFirst: false
});
问题是,无论我在自动完成中输入什么,当它到达 php 文件 autocomplete.php 时,它都会转换为小写
例如如果我搜索“Smart Boy”,php 文件将收到“smart boy”。这在某种程度上很好,因为当我在数据库中对查询进行类似搜索时,无论字母大小写如何,我都会得到所有匹配的结果。
但问题是,当我为希腊字符运行此脚本时,例如当我输入查询“Μικρές Οικιακές Συσκευές”时,它被转换为“μικρές οικιακές συσκευές”。现在,当我使用如下类似查询时:
"SELECT ID, NAME FROM CATEGORIES WHERE NAME LIKE '%".$query."%'"
我什么也没得到,因为数据库不使用不区分大小写的搜索来检查希腊字母。
我尝试使用这样的排序规则关键字:
"SELECT ID, NAME FROM CATEGORIES WHERE NAME LIKE '%".$query."%' COLLATE utf8_general_ci"
但我收到此错误: COLLATION 'utf8_general_ci' 对 CHARACTER SET 'latin1' 无效
我知道表格的字符集是 latin1,所以它不适用于 utf8 排序规则,所以如果我尝试使用 latin1_general_ci 排序规则,它会给我这个错误:
排序规则 (utf8_general_ci,IMPLICIT) 和 (latin1_general_ci,EXPLICIT) 的非法混合用于“like”操作
只有当我可以通过将查询转换为小写来停止自动完成时,它才能很好地解决问题。
当我没有在要调用的参数中指定任何此类内容时,为什么插件仍然转换为小写?
任何想法......
【问题讨论】:
标签: php jquery mysql jquery-ui autocomplete