2012-12-24 98 views
6

我試圖使用PHP創建一個以上的MySQL表,但它給錯誤,我無法理清什麼是錯的。創建多個MySQL表使用PHP

PHP代碼:

$sql = ' CREATE TABLE IF NOT EXISTS `mod_reminder_entries` 
    ( 
    `id`   INT(10) NOT NULL auto_increment, 
    `user_id`  INT(10) NOT NULL, 
    `entry_name` VARCHAR(255) NOT NULL, 
    `entry_value` INT(10) NOT NULL, 
    PRIMARY KEY (`id`), 
    FOREIGN KEY (`user_id`) REFERENCES tblclients (`id`) 
); 

CREATE TABLE IF NOT EXISTS `second_table` 
    ( 
    `user_id`  INT(10) NOT NULL, 
    `fieldstotal` INT(10) NOT NULL, 
    FOREIGN KEY (`user_id`) REFERENCES tblclients (`id`) 
); '; 

    mysql_query($sql); 

它給人的錯誤,除了不用擔心MySQL連接。我正確地連接數據庫,並且已經測試過了,語法肯定有些問題。

您的SQL語法錯誤;檢查手冊中 對應於你的MySQL服務器版本正確的語法使用 附近「CREATE TABLE IF NOT EXISTS second_tableuser_id INT

+1

[**在新的代碼,請不要使用'mysql_ *'功能**](http://bit.ly/phpmsql)。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 – Neal

+0

拋開技術差異,PDO更容易處理。 –

+3

感謝您的投票,但我工作的CMS支持mysql_ *函數。我不明白爲什麼這裏的人們如果在頭腦中甚至沒有什麼東西可以使用時就喜歡投票。 –

回答

4

不能使用分號分隔查詢與mysql_query,此功能只允許一個查詢!同時

您必須單獨執行的語句:

mysql_query(" 
    CREATE TABLE IF NOT EXISTS `mod_reminder_entries` (
     `id` INT(10) NOT NULL AUTO_INCREMENT, 
     `user_id` INT(10) NOT NULL, 
     `entry_name` VARCHAR(255) NOT NULL, 
     `entry_value` INT(10) NOT NULL, 
     PRIMARY KEY (`id`), 
     FOREIGN KEY (`user_id`) REFERENCES tblclients (`id`) 
    ) 
") or die(mysql_error()); 

mysql_query(" 
CREATE TABLE IF NOT EXISTS `second_table` (
    `user_id` INT(10) NOT NULL, 
    `fieldstotal` INT(10) NOT NULL, 
    FOREIGN KEY (`user_id`) REFERENCES tblclients (`id`) 
) 
") or die(mysql_error()); 

或者更好,使用mysqli_multi_query - 這意味着你必須切換到mysqli

+0

它將如何與MySQL函數一起工作? –

+0

分離出兩個'CREATE TABLE'查詢並使用mysql_query逐個執行它們。不要試圖做'split(「;」,$ query)'。 –

2

只是做了錯誤信息說什麼。

DO WHAT HE SAY!

您只能在與mysql_*please, don't use mysql_* functions in new code一次執行一個查詢。他們不再維護and are officially deprecated。看到red box?瞭解prepared statements代替,並用PDOMySQLi - this article將幫助您決定哪。如果您選擇PDO,here is a good tutorial

+0

我正在使用的CMS,不幸的是只支持mysql_ *函數。 –

+2

@backTangent確定....然後我會建議更改CMS,但無論如何。你一次只能用'mysql_ *'做一個查詢' – Neal

+0

我不能,我是自由職業者:) –