Чи не працює sql-запит
Відео: PHP для початківців | # 13 Підключення до БД і перший SQL-запит
У цій статті мова піде про одну з найпоширеніших причин, чому не працює SQL-запит. Ми зараз не беремо до уваги "випадкові помилки". Тут йде мова про передачу даних їх через форму і використовувались наступного разу в SQL-запитах, які іноді чомусь не працюють.
Припустимо, що Ви робите коментування у себе на сайті. І Ви хочете, щоб користувач мав право вводити будь-які символи, навіть лапки, зворотні слеші та інше. Запропонуємо приблизний вигляд Вашого запиту на вставку нового запису в таблицю коментарів:
INSERT INTO `mysite_comments`(`name`,`comment`) VALUES (`$ Name`,`$ Comment`)Тепер давайте підставимо в цей SQL-запит реальні дані, припустимо, name буде Михайло, а comment буде тестування.
INSERT INTO `mysite_comments`(`name`,`comment`) VALUES (`Михайло`,`Тестування`)Як Ви думаєте, чи спрацює такий запит? Безумовно, він буде прекрасно працювати. Але що якщо хто-небудь введе name Михайло, а comment Мій `коментар:
INSERT INTO `mysite_comments`(`name`,`comment`) VALUES (`Михайло`,`Мій`коментар`)Як Ви розумієте, даний SQL-запиту не буде виконаний. І ось тепер розповім про вирішенні цієї проблеми.
Необхідно будь-які змінні, які використовуються в SQL-запитах, пропускати через функції addslashes (). Дані функція займається екрануванням наступних спецсимволов: одинарна лапка, зворотна лапки, лапки і зворотний слеш.
Таким чином, якщо ми зробимо так:
$ name = addslashes($ name) -
$ comment = addslashes($ comment) -те наш SQL-запит стане таким:
Відео: Курс по SQL. Внутрішнє об`єднання таблиць в базах даних SQLite: SQL запит SELECT INNER JOIN
INSERT INTO `mysite_comments`(`name`,`comment`) VALUES (`Михайло`,`Мій ` коментар `)І ось цей SQL-запит вже виконається без проблем.
Відео: Як працює рекурсія? Ієрархічні / рекурсивні SQL запити в базах даних SQLite: WITH RECURSIVE
І ще один момент, про який часто забувається. Будь-які вхідні дані треба обов`язково пропускати через функцію htmlspecialchars (), за винятком окремих випадків. Ця функція позбавить Вас від заливки в базу HTML-коду.
Щоб зрозуміти важливість функції htmlspecialchars () давайте розберемо простий приклад, пов`язаний з тими ж коментарями. Якщо користувач матиме право передавати HTML-код (А він це права завжди має), який згодом не буде ніяк оброблений, то при виведенні коментаря на сторінку цей код буде виконаний. Найпростіший приклад - це зробити редирект на jаvascript на сайт зловмисника. Таким чином, будь-який, хто зайде на сторінку з цим коментарем, буде миттєво відправлений на інший сайт.
Підіб`ємо невеликий підсумок. завжди використовуйте функцію htmlspecialchars () для всіх вхідних даних, за винятком самих рідкісних випадків. І завжди використовуйте функцію addslashes () для кожної змінної, яка бере участь в SQL-запитах.
Команда doskey - редагування і повторний виклик команд windows- створення макросів doskey.
Як знайти помилку в sql-запиті
Як зробити динамічне додавання коментарів, використовуючи ajax.
Як зробити коментування на сайті
Як зробити коментування на html-сайті
Як зробити смайли в коментарях
Як дізнатися синтаксис sql-запиту через phpmyadmin
Як ігнорувати вставку записи в sql.
Sql-запит на вибірку з декількох таблиць
Запит sql на створення і видалення бази даних
Випадкова вибірка з бази даних
Чутливі до регістру пошук для mysql
Pdo. Частина 3.
Реалізація пошуку на сайті через php
Відправка ajax-запиту на інший домен
Запит sql на вибірку певного числа записів
Запит sql на створення індексу
Коментарі у вигляді бульбашки.
Відправлення запитів до бази даних в php
Запит sql на додавання і видалення записів
Запит sql на створення (зміна) користувача
Як дізнатися синтаксис sql-запиту через phpmyadmin
Реалізація пошуку на сайті через php
Як зробити коментування на сайті
Запит sql для сортування результату вибірки
Коментарі у вигляді бульбашки.
Як знайти помилку в sql-запиті
Відправлення запитів до бази даних в php
Як зробити смайли в коментарях
Запит sql на створення індексу