4

The error message I got:

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 ''word','group','selfnote') VALUES ('item','a','note to self')' at line 1

The PHP code is:

$toq="INSERT INTO articles ('word','group','selfnote') 
VALUES ('$ttle','$wrdr','$snote')";

I was trying to find solutins, but they didn't seem to work as echoing gives:

INSERT INTO articles ('word','group','selfnote') 
VALUES ('item','a','note to self')

which seems nice to me. What is the problem?

2
  • Have you tried running the exact same query in phpMyAdmin? Commented Jan 29, 2012 at 19:06
  • 2
    Obligatory note: mysql_real_escape_string() your data, else Bad Things will happen, e.g. when $snote == "It's simple". Commented Jan 29, 2012 at 19:19

4 Answers 4

8

Use backticks ` instead of quotes ' to escape names. Quotes are string delimiters.

$toq="INSERT INTO articles (`word`,`group`, `selfnote`) VALUES ('$ttle','$wrdr','$snote')";
Sign up to request clarification or add additional context in comments.

Comments

8

You've put quotes on your field names. That forces MySQL to treat them as strings, not field names - and you can't insert into strings.

INSERT INTO articles (word, group, selfnote) VALUES (....);

is the correct syntax. The only quoting type allowed on field names is the use of backticks to escape reserved word fields, e.g.

INSERT INTO articles (table, int, varchar)  ...

would fail due to the use of 3 reserved words, but adding backticks

INSERT INTO articles (`table`, `int`, `varchar`)  ...

makes them acceptable as fieldnames.

1 Comment

Presumably he was trying to avoid the bare keyword group. (I don't know whether it's acceptable in this particular context or not.)
4

You shouldn't quote column names with normal quotes (''), rather, use backticks (``).

1 Comment

@slapthelownote: The MySQL manual seems to think so; I can't think of any more authoritative resource: "The identifier quote character is the backtick (“`”)". dev.mysql.com/doc/refman/5.0/en/identifiers.html
2

You must remove or replace the quotes of the column names by backticks (`). Since "group" is a keyword, you have to use backticks:

INSERT INTO articles (`word`, `group`, `selfnote`) VALUES (....);

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.