Страницы

Поиск по вопросам

четверг, 14 марта 2019 г.

Ошибка синтаксиса при вставке данных в БД

Никак не пойму где я ошибаюсь. 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 ''persons' VALUES ('123', dfgh, kkk, 33)' at line 1
$result = mysql_query("INSERT INTO 'persons' VALUES ($idInput, $nameInput, $lnameInput, $ageInput)" , $db) or die(mysql_error());


Ответ

кавычки вокруг строковых значений кто будет проставлять? и поставьте MySQL Workbench, он автоматически подсвечивает строку с некорректным синтаксисом, в нем и дебажьте ваши запросы
p.s. и у вас еще одна ошибка (первопричина, кстати) - одинарные кавычки вокруг имени таблицы
mysql> use 'db'; #здесь корректно, но излишне, это внутренняя команда mysql # хотя use db тоже сработает (и быстрее печатать) Database changed mysql> show tables; +--------------+ | Tables_in_db | +--------------+ | OrderHistory | | users | +--------------+ 2 rows in set (0.00 sec) #здесь некорректно, не по стандарту SQL mysql> select * from 'users'; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''users'' at line 1
во первых, в этом запросе кавычки вокруг имени таблицы не нужны, а во вторых, правильные кавычки для sql - это backticks:
mysql> select * from `users`; +----+------------+- | id | login
ответ к комменту касательно кавычек вокруг полей типа INT/DOUBLE/FLOAT и т.д.: они возможны, но не обязательны. При малой нагрузке лишний байтик потраченный на передачу кавычек незаметен.
При большой нагрузке, при вставке больших объемов данных (когда вы вставляете данные вплоть до max_allowed_packet) , когда у вас идет множество числовых полей, вы получите дополнительную нагрузку/придется снизить количество рядов, которые вы можете вставить одновременнно.
Кроме того, чисто семантически это дает понять, когда вы просматриваете какой-нибудь большой запрос, что цифры должны вставляться в колонку с числовым типом.
Когда вы видите такой запрос, вы понимаете, что в этом есть логика и намерение.

Комментариев нет:

Отправить комментарий