sujit995 Ответов: 2

$Query = "SELECT * from posts WHERE post_catecory_id = $post_category_id ";


1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '$query = "SELECT * FROM posts WHERE post_catecory_id = $post_category_id "' at line 1

я получаю этот тип ошибки, может ли кто-нибудь сказать мне, как решить эту проблему.

Что я уже пробовал:

я не знаю, как решить эту проблему

2 Ответов

Рейтинг:
2

Patrice T

Проблема в том, что запрос зависит от значения переменных, мы понятия не имеем, что такое реальный запрос:

$query = "SELECT * FROM posts WHERE post_catecory_id = $post_category_id "

Не обязательно решение вашего вопроса, но у вас есть еще одна проблема.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? - Обмен Стеками Информационной Безопасности[^]


Maciej Los

5ed!

Patrice T

Спасибо

Рейтинг:
0

Maciej Los

Выполните следующие действия:: MySQL Error 1064: у вас есть ошибка в вашем синтаксисе SQL | InMotion Hosting Support Center[^]

Цитата:
недостающие данные

Иногда данные могут отсутствовать в базе данных. Это вызывает проблемы, когда данные требуются для завершения запроса. Например, если создается база данных, требующая идентификационного номера для каждого студента, разумно предположить, что будет создан запрос для извлечения записи студента по этому идентификационному номеру. Такой запрос будет выглядеть следующим образом:
SELECT * from students WHERE studentID = $id


Если $id никогда правильно не заполненный код, запрос будет выглядеть так для сервера:
SELECT * from students WHERE studentID =


Поскольку там ничего нет, движок MySQL запутывается и жалуется через ошибку 1064.

Как это исправить:
Будем надеяться, что ваше приложение будет иметь какой-то интерфейс, который позволит вам вызвать конкретную запись и добавить недостающие данные. Это сложно, потому что если недостающие данные являются уникальным идентификатором, то, скорее всего, потребуется эта информация, чтобы вызвать его, что приведет к той же ошибке. Вы также можете зайти в базу данных (обычно в phpMyAdmin), где вы можете выбрать конкретную строку из соответствующей таблицы и вручную добавить данные.