6

我正在尝试使用 php 创建一个以上的 MySQL 表,但它给出了错误,我无法弄清楚它有什么问题。

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_table( user_idINT ) 附近使用正确的语法

4

2 回答 2

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

于 2012-12-24T16:48:26.663 回答
2

只需按照错误消息中的说明操作即可。

您一次只能执行一个查询,mysql_*请不要mysql_*在新代码中使用函数。它们不再被维护并被正式弃用。看到红框了吗?改为了解准备好的语句,并使用PDOMySQLi -本文将帮助您决定使用哪个。如果您选择 PDO,这里有一个很好的教程

于 2012-12-24T16:48:42.033 回答