2013-09-19 2 views
-1

Может кто-нибудь помочь мне в этом. Форма не должна различать заглавные буквы и обычные буквы.Поисковый запрос, заглавными буквами

$raw_results = mysql_query("SELECT * FROM product 
      WHERE (`naam` LIKE '%".$query."%') OR (`titel` LIKE '%".$query."%') OR (`druk` LIKE '%".$query."%')") or die(mysql_error()); 

Кодировку latin1_bin

+0

Extreme SQL Injection Alert – allen213

+0

«форма», и вы показываете нам запрос? – Loko

+0

Извините, я изменил его;) – Koessien

ответ

1

В mysql вы можете использовать UPPER.

$raw_results = mysql_query("SELECT * FROM product 
      WHERE (UPPER(naam) LIKE UPPER('%".$query."%')) OR (UPPER(titel) LIKE UPPER('%".$query."%')) OR (UPPER(druk) LIKE UPPER('%".$query."%'))") or die(mysql_error()); 
+0

Недопустимое использование 'LIKE '%". UPPER ($ query). "%'' Или ваш фиксированный 'LIKE '% UPPER (". $ Query. ")%''. Функция должна быть вне строки 'LIKE UPPER ('%". $ Query. "%')'. –

+0

Спасибо и извините. – JTC

+0

Код не сработал :( – Koessien

0

Воспользоваться strtolower в строчные все ваши запросы, а затем выполнить поиск.

Что-то вроде этого, чтобы оно соответствовало всем.

$query=strtolower($query); 
$raw_results = mysql_query("SELECT * FROM product 
      WHERE (`naam` LIKE '%".$query."%') OR (`titel` LIKE '%".$query."%') OR (`druk` LIKE '%".$query."%')") or die(mysql_error()); 
+0

'mb_strtolower()' следует использовать вместо 'strtolower'. –

+0

Я не думаю, что они имеют большое значение. –

+1

ofc они делают, например: 'echo strtolower ('Š'). mb_strtolower ('Š'); 'будет выводить' Šš'. Но да, это зависит от того, какую кодировку будет использовать OP. –

-3

конвертировать все в любой строчной или верхний регистр он будет работать

$raw_results = mysql_query("SELECT * FROM product 
      WHERE (strtolower(naam) LIKE '%".strtolower($query)."%') OR (strtolower(titel) LIKE '%".strtolower($query)."%') OR (strtolower(druk) LIKE '%".strtolower($query)."%')") or die(mysql_error()); 
+0

'strtolower' не является функцией mysql. – PeeHaa

1

Это зависит от сортировки, который вы используете для вашей области. По умолчанию latin1_general_ci сопоставление (или аналогичные _ci -ended) сравнение и строковые функции будут нечувствительны к случаю.

Итак, у вас есть два варианта. Сначала используйте strtolower() в своем приложении PHP или LOWER() в самой MySQL - чтобы преобразовать строки поиска в нижний регистр (т. Е. Сделать их независимыми от их исходного содержимого). Второй - используйте соответствующую сортировку для полей, содержащих ваши данные. Больше информации, чем я уже представил, находится в case sensitivity manual page.

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