• При попытке записать апостроф в SQL выдает ошибку? Как это исправить?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Учить РНР надо не по написанным нубами при царе Горохе руководствам, а по нормальным учебникам.
    Или хотя бы по нормальным ответам на тостере.
    https://qna.habr.com/q/918033#answer_1847841

    Никакого $data в запросе быть не должно. Любые переменные должны отправляться в БД отдельно
    Для этого надо
    Заменить все переменные в запросе на специальные маркеры, которые называются плейсхолдеры или параметры, а по сути - просто знаки вопроса
    Подготовить запрос к исполнению с помощью функции prepare(). Эта функция принимает строку запроса и возвращает экземпляр специального класса stmt, с которым в дальнейшем и производятся все манипуляции
    Привязать переменные к запросу.
    Выполнить подготовленный ранее запрос с помощью с помощью execute()

    В mysqli это будет так
    $sql = "INSERT INTO `events` (`title`, `discription`, `date`, `img`) VALUES (?,?,?,?)";
    $stmt = $link->prepare($sql);
    $stmt->bind_param("sssss", $title, $discription, $date, $path);
    $stmt->execute();


    bind_param() принимает в качестве параметров все переменные, которые должны попасть в запрос, в том же самом порядке, в котором стоят плейсхолдеры в запросе. Но кроме того, сначала в этой функции должны быть указаны типы для всех переменных, в виде строки, где тип переменной обозначается одной буквой. То есть букв в этой строке должно быть ровно столько, сколько дальше будет переменных. К счастью, можно особо не париться с типами и для всех переменных указывать тип "s".

    И тогда никаких ошибок запроса уже никогда не будет. Не говоря уже про инъекции.
    Ответ написан
    2 комментария
  • Передача нескольких GET параметров через форму?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Никак не делать, эти переменные никому не мешают
    Ответ написан
    1 комментарий
  • Как сделать автоматическое увеличение textarea по высоте, по мере заполнения текста?

    SDmitriyS
    @SDmitriyS
    Javascript разработчик
    <textarea style="overflow:hidden;"></textarea>

    var textarea = document.querySelector('textarea');
    
    textarea.addEventListener('keyup', function(){
    	if(this.scrollTop > 0){
    		this.style.height = this.scrollHeight + "px";
      }
    });
    Ответ написан
    1 комментарий