我需要一次创建多个表。我很难找到完成此任务的正确方法。目前我的脚本是这样的:
private function buildDB() {
$sql = <<<MySQL_QUERY
CREATE TABLE IF NOT EXISTS headings (
type VARCHAR(150),
heading VARCHAR(100),
uniqueid VARCHAR(100)
)
CREATE TABLE IF NOT EXISTS titles (
type VARCHAR(150),
heading VARCHAR(100),
uniqueid VARCHAR(100)
)
MySQL_QUERY;
return mysql_query($sql);
}
显然,这是行不通的,也没有创建任何表。有没有一种简单的方法可以一次创建多个表?
最佳答案
MySQL 越来越困惑,因为您没有为查询定界。在第一个 CREATE
语句之后添加一个分号:
private function buildDB() {
$sql = <<<MySQL_QUERY
CREATE TABLE IF NOT EXISTS headings (
type VARCHAR(150),
heading VARCHAR(100),
uniqueid VARCHAR(100)
);
CREATE TABLE IF NOT EXISTS titles (
type VARCHAR(150),
heading VARCHAR(100),
uniqueid VARCHAR(100)
)
MySQL_QUERY;
return mysql_query($sql);
}
此外,确保 MySQL_QUERY
位于行的开头,没有其他字符,分号除外,根据 Heredoc documentation .
看到上面的代码似乎不起作用,试试这个代码:
private function buildDB() {
$sql1 = "CREATE TABLE IF NOT EXISTS headings (
type VARCHAR(150),
heading VARCHAR(100),
uniqueid VARCHAR(100))";
$sql2 = "CREATE TABLE IF NOT EXISTS titles (
type VARCHAR(150),
heading VARCHAR(100),
uniqueid VARCHAR(100))";
MySQL_QUERY;
return mysql_query($sql1) && mysql_query($sql2);
}
您可以使用mysqli_multi_query()
(MySQL 版本不存在),但那时您必须使用MySQLi。上面的代码返回两个查询的逻辑与,因此如果一个查询失败,您仍然会返回 0
。
关于php - SQL 一次创建多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8766865/