View Full Version : Wrong SQL Syntax

11-29-2006, 03:14 AM
My MySQL version is 5.0. I am trying to run this small query but getting this SQL error

"Error! Could not insert valuesYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''userdata' ('fName', 'lName', 'email', 'confEmail', 'password', 'confirmPassword' at line 1"

The syntax that I am working on is:

$sql = "insert data 'userdata' ('fName', 'lName', 'email', 'confEmail', 'password', 'confirmPassword', 'address', 'city', 'state', 'postCode', 'gender', 'profession', 'ageGroup', 'mallPref', 'mailConsent') VALUES ($fName, $lName, $email, $confEmail, $password, $confirmPassword, $address, $city, $state, $postCode, $gender, $profession, $ageGroup, $mallPref, $mailConsent)";

dont understand where is it wrong. Does capitalization of INSERT also matters. I am new to this. Please advice.

Thanks in advance.


11-29-2006, 04:09 AM
It's always helpful to include in your error handling a display of the query string as it looks all put together. A simple "echo $sql;" statement can really help.

As it looks to me, you need to enclose your table name in `backticks` (the tick just above your tab key and to the left of your 1 key) rather than normal single quotes. You can omit those ticks altogether if you name your tables properly (i.e. don't name them a MySQL reserved word or something equally silly).

11-29-2006, 11:04 AM
Have you tried

$sql = "insert into userdata ('fName', 'lName', 'email', 'confEmail', 'password', 'confirmPassword', 'address', 'city', 'state', 'postCode', 'gender', 'profession', 'ageGroup', 'mallPref', 'mailConsent') VALUES ($fName, $lName, $email, $confEmail, $password, $confirmPassword, $address, $city, $state, $postCode, $gender, $profession, $ageGroup, $mallPref, $mailConsent)";

Maybe you know something I dont but I've never seen 'INSERT DATA' in mysql before

11-29-2006, 11:53 AM
As NancyJ says + you need to add single quotes around text fields ... so

'$fName', '$lName', '$email'


personally I prefer the INSERT INTO `table` SET style since you can use the same SQL for INSERTS, UPDATES or REPLACE's

$sql="`field1`='$field1', `field2`='$field2'";
$sql = "INSERT INTO `table` SET $sql";
$sql="UPDATE `table` SET $sql";

note that the `'s around the field and table names are backticks not single quotes.