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

AND и OR в MYSQL

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