За последние 24 часа нас посетили 22820 программистов и 1232 робота. Сейчас ищет 771 программист ...

Зачем нужны кавычки???

Тема в разделе "PHP для новичков", создана пользователем JastaFly, 7 янв 2020.

  1. JastaFly

    JastaFly Активный пользователь

    С нами с:
    4 ноя 2019
    Сообщения:
    46
    Симпатии:
    3
    Доброго всем времени суток! Подскажите почему такой SQL запрос работает:
    PHP:
    1. $query = "UPDATE note SET name='$title_no_uferline', description='$text_no_underline', date='$date_msk' WHERE id='$id'";
    а такой нет (без переменных в кавычках):
    PHP:
    1. $query = "UPDATE note SET name=$title_no_uferline, description=$text_no_underline, date=$date_msk WHERE id=$id";
    При том что такой запрос отлично проходит:
    PHP:
    1. $get = "SELECT * FROM note WHERE id=$id";
     
  2. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    патамушта $id - число, а другие переменные у тебя - строковые, и им нужны кавычки
     
    JastaFly нравится это.
  3. JastaFly

    JastaFly Активный пользователь

    С нами с:
    4 ноя 2019
    Сообщения:
    46
    Симпатии:
    3
    Да я уже сам догадался, но всё равно спасибо)
     
    Roman __construct нравится это.
  4. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    You are welcome! :)
     
  5. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    Хочешь, я сделаю, чтобы не работал? :)
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.752
    Симпатии:
    1.322
    Адрес:
    Лень
    PHP:
    1. $db = new connect( ...[ ... ] );
    2.  
    3. $db -> setCharset( 'utf8' );
    4.  
    5. # ------------
    6.  
    7. $db -> prepare( 'INSERT ... VALUES ( ?, ?, ? )' );
    8.  
    9. $db -> values( [ 'NO', 'SQL', 'Injection' ] );
    --- Добавлено ---
    #PDOPrepare, #mySQLi_Prepare
     
  7. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    @JastaFly Нельзя подставлять переменные прямо в запрос, надо подготовленные использовать. А то вас взломають
     
    Roman __construct нравится это.
  8. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    тож хотел написать, но поленился))

    потому что все равно в реальной разработке он ORM будет использовать :D
     
  9. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Ха... Мне как-то кандидат на собеседовании показывал свой код, я порадовался: код на Eloquent, уязвимый к SQL-инъекциям. Так что всё равно, надо понимать, что ты делаешь, а не просто на ORM надеяться
     
  10. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    А как может быть уязвимость при использовании Eloquent? :)

    Я думал внутри Eloquent всё через подстановки организовано, не?
     
  11. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Roman __construct нравится это.
  12. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112