我正在尝试使用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_id
INT
答案 0 :(得分: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。
答案 1 :(得分:2)
只需执行错误消息所说的内容。
您只能使用mysql_*
please, don't use mysql_*
functions in new code一次执行一个查询。它们不再被维护and are officially deprecated。请参阅red box?转而了解prepared statements,并使用PDO或MySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial。