Никак не пойму где я ошибаюсь.
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) , когда у вас идет множество числовых полей, вы получите дополнительную нагрузку/придется снизить количество рядов, которые вы можете вставить одновременнно.
Кроме того, чисто семантически это дает понять, когда вы просматриваете какой-нибудь большой запрос, что цифры должны вставляться в колонку с числовым типом.
Когда вы видите такой запрос, вы понимаете, что в этом есть логика и намерение.
Комментариев нет:
Отправить комментарий