I've got a little problem with a sql request:
my $sql resquest ( result of echo $sql ):
INSERT INTO match (id, id_match, login, real_login, reponse, date) VALUES (NULL, '11', 'CaptainRida', 'rbikitar', 'oui', '2014-06-07')
and the error
Error: 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 'match (id, id_match, login, real_login, reponse, date) VALUES
(NULL, '11', 'Capt' at line 1
the sql request is truncated at 'login'. always 4 characters and BAM truncated.
can anyone help me, I have THE SAME SQL RESQUEST with another table ( exactly the same except rencontre instead of match and id_rencontre instead of id_match)
the "rencontre" request works great and the "match" request is truncated in the error.
MATCH is a MySQL reserved word.
Enclose it in backticks:
insert into `match` (id, id_match, ...
Or, consider changing the name of the table to not use a reserved word (recommended).
Related
I have a table called design_designs
The table contains 4 columns: id, key, value, nonceId
I'm attempting to run a query to insert into the table:
INSERT INTO design_designs(key, value, nonceId)
VALUES ('test key', 'test value', 'test nonce');
The error i get is:
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 'key, value, nonceId)
VALUES ('test key', 'test value', 'test nonce')' at line 1
Any idea what I'm doing wrong? According to the documentation on queries my query is correct. I'm obviously missing something.
key is a reserved word, you must delimit it:
INSERT INTO design_designs(`key`, value, nonceId) VALUES...
When I tried to insert into a table in Mysql with the following fields direction, from, to, message, I got the following error
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 'from, to, message) VALUES ( 'outgoing','FROM_NUMBER','TO_NUMBER','asas')'
Query:
INSERT INTO corporate.sms (direction, from, to, message) VALUES ( 'outgoing','FROM_NUMBER','TO_NUMBER','test message');
Is there any other way to do the insertion without changing the column names?
Since field name such as 'from' and 'to' is reserved by MySQL's SQL syntax,
you need to wrap those field names by ` ( backquote ).
So your SQL will be
INSERT INTO corporate.sms (direction, `from`, `to`, message) VALUES ( 'outgoing','FROM_NUMBER','TO_NUMBER','test message');
from and to are reserved keywords in SQL.
The solution is quite simple. Just encapsulate the from and to columns in your query between two Grave Accents(``), which is the key above Tab in your keyboard. That way, SQL Parser distinguishes the column names with reserved keywords and performs the insertion.
The query becomes:
INSERT INTO corporate.sms (direction, `from`, `to`, message) VALUES ( 'outgoing','FROM_NUMBER','TO_NUMBER','test message');
This question already has an answer here:
Syntax error due to using a reserved word as a table or column name in MySQL
(1 answer)
Closed 8 years ago.
MySQL keeps reporting an error when executing the SQL query. Everything looks right to me, but Ive been looking at it for about an hour now.
"INSERT INTO invoices
(total, generated, account, market, status, name, hash)
VALUES
('$total', Now(), '$aid', '$mid', '$name', 'Active', '$hash')"
Error
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 'desc, account, market, status, name, hash) VALUES ('499.99', NOW(), 'System gene' at line 1 (SQL: INSERT INTO invoices (total, generated, desc, account, market, status, name, hash) VALUES ('499.99', NOW(), 'System generated invoice during Market setup/activation.', '6', '9', 'Zac Company - Chandler', 'Active', 'b0521f6668cb87de009866b67b25b458')
I think this is an easy fix that just needs fresh eyes.
There it is
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 'desc, account,
desc is a reserve word and so must be escaped with back quote
`desc`
Also, total is a numeric column; so no need of quoting it
Your sql query should be like below
INSERT INTO invoices (total, generated, `desc`, account, market, status, name, hash)
<--Here
VALUES (499.99, NOW(), 'System generated invoice during Market setup/activation.',
'6', '9', 'Active', 'Zac Company - Chandler', 'b0521f6668cb87de009866b67b25b458')
I have the following query:
INSERT INTO `area`(name, fk_hub_id) VALUES ('$name',SELECT 'id' from hub WHERE name = '$hub_name')
What i am trying to do is insert a value (name= $name) which is obtained from a from and then the foreign key id of a certain hub which is obtained by the sub-query.
when I run this query i get the following error:
1064 - 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 'SELECT 'id' from hub WHERE name = 'EASTERN_CAPE')' at line 1.
Is my query incorrect? Any suggestions how to do it?
Use ` around column_name, you are using ' around id column_name. Also use () for inner query.
INSERT INTO `area`(name, fk_hub_id) VALUES ('$name',SELECT 'id' from hub WHERE name = '$hub_name')
should be
INSERT INTO `area`(name, fk_hub_id) VALUES ('$name',(SELECT `id` from hub WHERE name = '$hub_name'))
Note : Your code is wide open for SQL injection, use prepared statement OR escape them.
Put the given value into the SELECT:
INSERT INTO area (name, fk_hub_id)
SELECT '$name', id
FROM hub
WHERE name = '$hub_name'
Try:
INSERT INTO `area` (name, fk_hub_id)
SELECT '$name',
id
FROM hub
WHERE name = '$hub_name'
I'm trying to teach myself MySQL while working on a project at the same time. I'm using phpMyAdmin.
I'm getting the error: "#1064 - 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 ''ps_category' ('id_category', 'id_parent', 'id_shop_default', 'level_depth', 'nl' at line 1"
My code:
INSERT INTO 'ps_category'
('id_category', 'id_parent', 'id_shop_default',
'level_depth', 'nleft', 'nright', 'active',
'date_add', 'date_upd', 'position', 'is_root_category')
VALUES (6,2,1,0,0,0,1,'2012-04-12 15:12:54','2012-04-12 15:12:54',1,0)
UPDATE:
I took off the single quotes and still getting the same error:
INSERT INTO ps_category
('id_category', 'id_parent', 'id_shop_default',
'level_depth', 'nleft', 'nright', 'active',
'date_add', 'date_upd', 'position', 'is_root_category')
VALUES (6,2,1,0,0,0,1,'2012-04-12 15:12:54','2012-04-12 15:12:54',1,0)
INSERT INTO `ps_category` (`id_category`, `id_parent`, `id_shop_default`, `level_depth`, `nleft`, `nright`, `active`, `date_add`, `date_upd`, `position`, `is_root_category`) VALUES (6,2,1,0,0,0,1,'2012-04-12 15:12:54','2012-04-12 15:12:54',1,0)
You are using a single quote on the table name. It should be ticks or nothing. It should be noted, the ticks help to ensure properly reading the table name. If you name your table a mysql reserved word, the ticks will prevent it from erroring
The table name should not be entered as a string literal, either remove these '' or put two '' and '' around it like so
INSERT INTO ps_category ...
Or
INSERT INTO `ps_category` ...
Table names should not be quoted