поиск без учета регистра в php - PullRequest
0 голосов
/ 08 октября 2009

Я использую небольшой скрипт поиска на моем сайте.

После публикации формы поиска, я получаю эту переменную:

$var = $_GET[$q] ;
$trimmed = trim($var); 

Тогда я пытаюсь найти в базе данных:

$query = "select * from test where acc like \"%$trimmed%\""; 
$numresults=mysql_query($query);
$numrows=mysql_num_rows($numresults);
.......

Я пытаюсь найти слово "тест". (В моей базе данных есть строка со словом «Тест».) Но ничего не найдено. Если я ищу "ТЕСТ", то ничего. Только тогда я получу результат, если буду искать именно слово в базе данных. (Test).

Я где-то читал, что "LIKE" нечувствителен к регистру.

Не могли бы вы мне помочь? Могу ли я изменить код для поиска без учета регистра?

Спасибо.

Ответы [ 3 ]

2 голосов
/ 08 октября 2009

Документ о чувствительности к регистру :

Набор символов и параметры сортировки по умолчанию - latin1 и latin1_swedish_ci, поэтому при сравнении недвоичных строк по умолчанию регистр не учитывается. Это означает, что если вы ищете с col_name LIKE 'a%', вы получите все значения столбцов, которые начинаются с A или a. Чтобы сделать этот поиск чувствительным к регистру, убедитесь, что один из операндов имеет чувствительность к регистру или двоичное сопоставление. Например, если вы сравниваете столбец и строку, в которых оба имеют набор символов latin1, вы можете использовать оператор COLLATE, чтобы у любого операнда был параметр сравнения latin1_general_cs или latin1_bin

1 голос
/ 08 октября 2009

Это может помочь вам.

http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html

Кстати, вы должны использовать объект mysqli для выполнения SQL-запроса в PHP.

1 голос
/ 08 октября 2009

Чувствительность к регистру зависит от сопоставления вашей таблицы:

SHOW CREATE TABLE test

Это начало - проверка, чувствительна ли ваша таблица к регистру или нет. Я оставлю это другим, чтобы рассказать о том, насколько небезопасен ваш пример кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...