I’m struggling to create SQL tables using email addresses as the table name.
The code I am using produces the following 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 ‘@gmail.com( id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id),
name VARCHAR’ at line 1
and the related code is:
// create new table for users tosses
// Make a MySQL Connection
mysql_connect("localhost", "$sqlusername", "$sqlpassword") or die(mysql_error());
mysql_select_db("$db_name") or die(mysql_error());
// Create a MySQL table in the selected database
mysql_query("CREATE TABLE $emailaddress(
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
name VARCHAR(30),
age INT)")
or die(mysql_error());
It works just fine when I input a value from the variable $emailaddress that is not an email address i.e. doesnt have an @ symbol, but it shows that error if it includes an @ symbol.
You should be able to get around this by escaping the table name with backticks (`). But really for most circumstances this is a bad way to design your database.
You should use one table with an emailaddress field instead of creating a new table for each user/email address, unless you have a specific need to do so.