php mysql jquery AJAX автозаполнение чувствительность к регистру - PullRequest
2 голосов
/ 13 февраля 2011

В моем 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'];
}

проверяет совпадения и работает хорошо.

Но предположим, что у моей таблицы есть имя Альфред, предложение появится только в том случае, если я наберу Alfrи не появляется, если я наберу alfr

1 Ответ

1 голос
/ 13 февраля 2011

Приведенный вами пример будет работать, если вы используете сортировку без учета регистра, такую ​​как 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 , чтобы получить и найти совпадение для строк, которые звучат одинаково.

Кстативам нужно использовать mysql_real_escape_string в переменной $ names или (еще лучше) использовать подготовленные операторы через интерфейсы mysqli или PDO.

...