2

在我的 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

4

1 回答 1

1

如果您使用不区分大小写的排序规则,例如utf8_general_ci. (有关更多信息,请参阅 MySQL字符集支持手册部分。)

或者,您可以简单地使用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 接口使用准备好的语句。

于 2011-02-13T15:38:52.727 回答