2012-12-24 57 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

我不能,我是自由职业者:) –