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