【问题标题】:php mysql jquery AJAX autocomplete case sensitivityphp mysql jquery AJAX自动完成区分大小写
【发布时间】:2011-06-26 11:34:00
【问题描述】:

在我的 php 脚本中,

$names = $_GET['part'];
$result = mysql_query("SELECT * FROM  namestable where names LIKE'%$names%' LIMIT 10");
while ($row = mysql_fetch_assoc($result)) {
        $colors[]=$row['publishers'];
}

检查匹配并运行良好。

但是假设我的表有一个名字 Alfred,只有当我输入 Alfr 时才会出现建议,如果我输入 alfr 则不会出现

【问题讨论】:

    标签: php jquery autocomplete jquery-autocomplete autosuggest


    【解决方案1】:

    如果您使用不区分大小写的排序规则,例如utf8_general_ci,您提供的示例将有效。 (有关详细信息,请参阅 MySQL Character Set Support 手册部分。)

    或者,您可以简单地使用LOWER 函数,如下所示:

    $names = strtolower(mysql_real_escape_string($_GET['part']));
    $result = mysql_query("SELECT * FROM namestable WHERE names LIKE LOWER('%$names%') LIMIT 10");
    

    顺便说一句,如果您试图捕捉除了简单的大小写变化之外的差异,您还可以使用 MySQL 的 SOUNDEX 函数来获取和查找听起来相似的字符串的匹配项。

    顺便说一句,您需要在 $names 变量上使用 mysql_real_escape_string,或者(更好)通过 mysqli 或 PDO 接口使用准备好的语句。

    【讨论】:

    • 所以你能建议我在代码中进行的更正吗??
    • 文档中说 soundex All nonalphabetic characters in str are ignored. 我也想包含数字..
    • @blasteralfred 我已经用一个简单的解决方案更新了我的答案。正如我所说的 soundex,如果你想比较相似的发音词 - 我提到的其他解决方案会更合适。
    • 不工作..我想我必须在我的代码上花很多钱...... :(
    猜你喜欢
    • 2019-05-29
    • 2014-01-26
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    • 2012-08-07
    • 1970-01-01
    相关资源
    最近更新 更多