2011-10-18 72 views
0

我想通過將該表的名稱作爲來自文本框的輸入來創建數據庫中的表。通過給出來自php文本框的輸入來創建數據庫表

<?php 
$tablename = $_POST['tablename']; 

    // Create a MySQL table in the selected database 
    mysql_query("CREATE TABLE $tablename(
    id INT NOT NULL AUTO_INCREMENT, 
    PRIMARY KEY(id), 
    firstpublish VARCHAR(255), 
    descriptions VARCHAR(255))") or die(mysql_error()); 
?> 

它使表和字段,但我不能插入任何數據。當我運行下面

<?php 
$firstpublish = $_POST['firstpublish']; 
$descriptions = $_POST['descriptions']; 

if(isset($_POST['firstpublish']) || ($_POST['descriptions'])) 
    { 
$order="INSERT INTO $tablename (id,firstpublish,descriptions) VALUES ('','$firstpublish','$descriptions')"; 
    $result = mysql_query($order) or die (mysql_error()); 
    } 
?> 

它顯示錯誤信息

代碼「您的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用附近的「正確的語法手冊(ID INT NOT NULL AUTO_INCREMENT,PRIMARY KEY(ID),firstpublish VARCHA」位於第1" 行 我怎樣才能固定這個問題。

-thankyou。

回答

0

的錯誤是在這裏:

mysql_query("CREATE TABLE $tablename(

因爲你是在引用字符串混合變量,則插入其名稱後的空白,因爲「$表名(」是非法的名稱,將最有可能被替換將空的,所以SQL語句實際上將看到了MySQL作爲

CREATE TABLE id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id), firstpublish VARCHAR(255), descriptions VARCHAR (255)) 

,反過來,是一個語法錯誤。

解決方法:添加一個空格$表名和「(」之間

+0

add他們之間的空間,但仍顯示錯誤。我不知道這是寫表名還是不寫的正確方法。 :( – webrider

+0

表正在創建,但是在該表中插入數據的問題 – webrider

+0

您得到的錯誤(即您在此處發佈的錯誤)表明錯誤在於創建表,而不是插入數據。你真的很確定表格是否被創建了嗎?嘗試在行之間加入一些「虛擬調試代碼」,比如'print(「Hello,我在mysql_query之前」);''print(「Now I'm之後「);'等,這將給你一個更好的提示,確切地說,發生錯誤的地方。 – bos

-1
<?php 

$tablename = $_POST['tablename']; 

    // Create a MySQL table in the selected database 
    mysql_query("CREATE TABLE $tablename (
    `id` int primary key auto_increment, 
    firstpublish VARCHAR(255), 
    descriptions VARCHAR(255))") or die(mysql_error()); 
?> 
+0

拍圍繞一個字段名不是一個SQL關鍵字一些反引號是不會改變任何事情 –

+0

都能跟得上..它仍然顯示相同的。!錯誤。:( – webrider

2

我最好的猜測是,你的第一個查詢是以某種方式重新運行一個空值$表名

如果這是一個公衆可訪問的頁面,我會非常小心從用戶輸入創建表。您還可能要(至少是)通過mysql_real_escape_string()運行$ tablenale並更改CREATE TABLECREATE TABLE IF NOT EXISTS

+0

我不知道它是寫表名查詢的正確方法嗎?那麼我該怎麼辦?:( – webrider

+0

嘗試用'if(!empty($ _ POST [' tablename'])){...}' –

+0

請原諒我,這是什麼包裝? – webrider

相關問題