Jump to content


Photo

Create MYSQL table from html form using PHP


  • Please log in to reply
9 replies to this topic

#1 aero4x

aero4x
  • New Members
  • Pip
  • Newbie
  • 6 posts

Posted 08 May 2006 - 08:23 PM

Hi, I just recently learned some basic PHP and MYSQL in hopes of creating a database driven website. Basically, I'm trying to let users search for something. If a MYSQL table allready exists with a name equal to their search term then great, I know what to do from there, but if no table exists allready, then i would like to create one using their search term as the name of the table. My code looks something like this...

<?php
mysql_connect ("localhost", "username", "password") or die(mysql_error());
mysql_select_db ("DB_name") or die(mysql_error());

$searchTerm = $_POST['searchTerm'];

$createTable = "CREATE TABLE " . $searchTerm . "(id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id), name VARCHAR(30), age INT)";

$mysqlString = "INSERT INTO " . $searchTerm . " (name, age) VALUES('" . $someVar . "', '" . $anotherVar . "' )";

mysql_query($mysqlString) or mysql_query($createTable) or die(mysql_error());

But whenever I use a search term that is not allready in the database i get 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 'test( id INT NOT NULL AUTO_I' at line 1

Even more wierd to me is that whatever the search term I use is displayed as bold in my error message. Even when I add some random string onto the search term variable, only the part that was actually part of the HTML form is bold. My current theory is that for some reason the HTML forms send some wierd type of a string that doesnt make MYSQL happy but I have no idea. I'm so confused. Any help would be greatly appreciated. Thanks in advance!

#2 trq

trq
  • Staff Alumni
  • Advanced Member
  • 31,041 posts

Posted 08 May 2006 - 10:34 PM

My biggest question is, why do you want to do this?

#3 aero4x

aero4x
  • New Members
  • Pip
  • Newbie
  • 6 posts

Posted 08 May 2006 - 11:04 PM

[!--quoteo(post=372445:date=May 8 2006, 06:34 PM:name=thorpe)--][div class=\'quotetop\']QUOTE(thorpe @ May 8 2006, 06:34 PM) View Post[/div][div class=\'quotemain\'][!--quotec--]
My biggest question is, why do you want to do this?
[/quote]

I'm trying to create a site that is largely based on user generated content, so if they search for something that doesn't allready exist, then I would like to make it exist :)

#4 sanfly

sanfly
  • Members
  • PipPipPip
  • Advanced Member
  • 344 posts
  • LocationNew Zealand

Posted 08 May 2006 - 11:16 PM

I also dont quite understand the need for this, but try this anyway.

$createTable = "CREATE TABLE '$searchTerm' (id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id), name VARCHAR(30), age INT)";

If you're not part of the solution, you're part of the precipitate

#5 aero4x

aero4x
  • New Members
  • Pip
  • Newbie
  • 6 posts

Posted 09 May 2006 - 05:17 PM

I get the same error with that code.

#6 trq

trq
  • Staff Alumni
  • Advanced Member
  • 31,041 posts

Posted 09 May 2006 - 05:54 PM

Creating seperate tables for users/searches is rediculous. I think you need to look into database normalization concepts.

#7 aero4x

aero4x
  • New Members
  • Pip
  • Newbie
  • 6 posts

Posted 09 May 2006 - 06:35 PM

From what I understand, database normalization refers to eliminating redundant data. Searches will be very specific so its not like 2 different users will search for "the boy" and "boy the" and mean the same thing, so I'm not so concerned about redundant data at this point. If I'm misunderstanding what your saying then please correct me, like I said, I'm new to PHP and MYSQL. If anyone else out there knows what im doing wrong with my code, please tell me. Thanks.

#8 sanfly

sanfly
  • Members
  • PipPipPip
  • Advanced Member
  • 344 posts
  • LocationNew Zealand

Posted 09 May 2006 - 06:51 PM

Oops, Try this

$createTable = "CREATE TABLE $searchTerm (id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id), name VARCHAR(30), age INT)";

If you're not part of the solution, you're part of the precipitate

#9 aero4x

aero4x
  • New Members
  • Pip
  • Newbie
  • 6 posts

Posted 09 May 2006 - 07:56 PM

[!--quoteo(post=372697:date=May 9 2006, 02:51 PM:name=sanfly)--][div class=\'quotetop\']QUOTE(sanfly @ May 9 2006, 02:51 PM) View Post[/div][div class=\'quotemain\'][!--quotec--]
Oops, Try this

$createTable = "CREATE TABLE $searchTerm (id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id), name VARCHAR(30), age INT)";
[/quote]


No luck, same problem, but thanks for the suggestion.

#10 aero4x

aero4x
  • New Members
  • Pip
  • Newbie
  • 6 posts

Posted 10 May 2006 - 03:30 AM

figured it out, thanks for the help




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users