2009-10-08 3 views
0

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

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

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

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

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

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

Я где-то читал, что «НРАВИТСЯ» - это случай INSensitive.

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

спасибо.

+2

$ var = $ _GET [$ q] -> Обязательно проверьте входные данные для инъекций. – KB22

+0

Что такое сортировка для соответствующего поля? – Zed

+0

@Holian - Пожалуйста, прислушайтесь к комментарию KB22, идите читать http://us2.php.net/manual/en/security.database.sql-injection.php, если вы не знаете, о чем он говорит. –

ответ

1

Doc on case sensitivity:

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

1

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

SHOW CREATE TABLE test

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

Смежные вопросы