使用MySQL和PHP运行多个CREATE TABLe查询

时间:2015-11-08 07:35:51

标签: php mysqli create-table mysqli-multi-query

我需要一次创建大量表,并使用PHP和MySQL将数据添加到第一个表中。我的代码如下所示:

$sql = "CREATE TABLE table1 (
code VARCHAR(5) PRIMARY KEY,
name VARCHAR(50) NOT NULL
);";

//adding businesses to table
$sql .= "INSERT INTO table1 (code, name)
VALUES ('CODE', 'name');";
//^this basic idea is run a few more times

$sql .= "CREATE TABLE table2 (
code VARCHAR(5) PRIMARY KEY,
name VARCHAR(50) NOT NULL
);";
//^same basic thing run a bunch more times w/ variations to columns

if ($conn->multi_query($sql) === TRUE) {
echo "<p>Tables created.</p>
<a href=\"adduser_form.php\">Continue</a>";
} else {
    echo "<p>Error creating tables: " . $conn->error . "</p>";
}

这只会创建第一个表并向其添加数据,它不会创建任何其他表,也不会收到任何错误消息(显示成功消息)。我一直在谷歌搜索解决方案一个小时,我无法想出任何东西。我想我需要一种方法来阻止创建下一个表,直到创建上一个表?

我是MySQL的新手,所以非常感谢新手友好:)

1 个答案:

答案 0 :(得分:0)

尝试在SQL语句中使用反引号,例如:

$sql .= "CREATE TABLE `table2` (
    `code` VARCHAR(5) PRIMARY KEY,
    `name` VARCHAR(50) NOT NULL
);";

您还应该在INSERT语句中使用反引号(以及您的第一个CREATE查询)。

如果我没弄错的话,name是保留字。