Jump to content

Archived

This topic is now archived and is closed to further replies.

aero4x

Create MYSQL table from html form using PHP

Recommended Posts

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...

[code]
<?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());
[/code]

But whenever I use a search term that is not allready in the database i get the following error.

[code]
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
[/code]

Even more wierd to me is that whatever the search term I use is displayed as [b]bold[/b] 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!

Share this post


Link to post
Share on other sites
My biggest question is, why do you want to do this?

Share this post


Link to post
Share on other sites
[!--quoteo(post=372445:date=May 8 2006, 06:34 PM:name=thorpe)--][div class=\'quotetop\']QUOTE(thorpe @ May 8 2006, 06:34 PM) [snapback]372445[/snapback][/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 :)

Share this post


Link to post
Share on other sites
I also dont quite understand the need for this, but try this anyway.

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

Share this post


Link to post
Share on other sites
Creating seperate tables for users/searches is rediculous. I think you need to look into database normalization concepts.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
Oops, Try this

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

Share this post


Link to post
Share on other sites
[!--quoteo(post=372697:date=May 9 2006, 02:51 PM:name=sanfly)--][div class=\'quotetop\']QUOTE(sanfly @ May 9 2006, 02:51 PM) [snapback]372697[/snapback][/div][div class=\'quotemain\'][!--quotec--]
Oops, Try this

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


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

Share this post


Link to post
Share on other sites

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.