Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

AND и OR в MYSQL

Денис Хабибуллин Ученик (92), на голосовании 1 год назад
Всем привет!
Имеется такая строка запроса: "SELECT * FROM c_goods WHERE active='1' AND articul LIKE '%'.$_GET['search'].'%' OR name LIKE '%'.$_GET['search'].'%' LIMIT 1";
Она не корректно работает, думаю потому, что AND и OR противоречят друг другу. Как корректно написать запрос, кто знает?? Пишу на php..
Голосование за лучший ответ
Илья Ш Просветленный (20236) 1 год назад
скобки использовать для группировки условий
Денис ХабибуллинУченик (92) 1 год назад
Так?
"SELECT * FROM c_goods WHERE active='1' AND (articul LIKE '%'.$_GET['search'].'%' OR name LIKE '%'.$_GET['search'].'%' LIMIT 1)";
Сергей Стодольский Мастер (1159) Денис Хабибуллин, Да так. И при этом не использовать $_GET непосредственно при построении запроса, иначе здравствуй SQL INJECTION
Сергей СтодольскийМастер (1159) 1 год назад
Кури учебник! )))
Сергей СтодольскийМастер (1159) 1 год назад
Твой запрос даже хакер-новичок сломает с пары тыков, и получит доступ к данным о пользователях, а то внедрит шелл непосредственно на твой сервер, а значит просто грохнет тебе сайт...
Денис Хабибуллин Ученик (92) Сергей Стодольский, mysqli_real_escape_string подойдет же?
злобная дичь с атомного леса Мастер (2310) 1 год назад
"SELECT * FROM c_goods WHERE (articul LIKE '%{$_GET['search']}%' OR name LIKE '%{$_GET['search']}%') AND active='1' LIMIT 1" дополнительно + $_GET['search'] нужно фильтровать от sql inject
Денис ХабибуллинУченик (92) 1 год назад
как фильтровать, подскажешь?
злобная дичь с атомного леса Мастер (2310) Денис Хабибуллин, можно использовать класс оболочку snipp.ru/php/clear-form или прочитать про htmlacademy.ru/tutorial/php/sql-injections
Похожие вопросы