Доброго всем времени суток! Подскажите почему такой SQL запрос работает: PHP: $query = "UPDATE note SET name='$title_no_uferline', description='$text_no_underline', date='$date_msk' WHERE id='$id'"; а такой нет (без переменных в кавычках): PHP: $query = "UPDATE note SET name=$title_no_uferline, description=$text_no_underline, date=$date_msk WHERE id=$id"; При том что такой запрос отлично проходит: PHP: $get = "SELECT * FROM note WHERE id=$id";
PHP: $db = new connect( ...[ ... ] ); $db -> setCharset( 'utf8' ); # ------------ $db -> prepare( 'INSERT ... VALUES ( ?, ?, ? )' ); $db -> values( [ 'NO', 'SQL', 'Injection' ] ); --- Добавлено --- #PDOPrepare, #mySQLi_Prepare
@JastaFly Нельзя подставлять переменные прямо в запрос, надо подготовленные использовать. А то вас взломають
тож хотел написать, но поленился)) потому что все равно в реальной разработке он ORM будет использовать
Ха... Мне как-то кандидат на собеседовании показывал свой код, я порадовался: код на Eloquent, уязвимый к SQL-инъекциям. Так что всё равно, надо понимать, что ты делаешь, а не просто на ORM надеяться
А как может быть уязвимость при использовании Eloquent? Я думал внутри Eloquent всё через подстановки организовано, не?
Так и быть, держите развлечение: https://github.com/Ocnelias/jobs-search-laravel-5/blob/master/app/Http/Controllers/JobController.php