php - SQL 一次创建多个表

标签 php mysql sql

我需要一次创建多个表。我很难找到完成此任务的正确方法。目前我的脚本是这样的:

  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/

相关文章:

php - 使用 PHP 在 MySQL 中 JOIN 后重复列名

php - 我应该如何使用 jQuery 验证插件检查记录是否存在?

mysql - 除 "super"之外的所有权限

MySQL 性能 : views vs. 函数与存储过程

mysql - 如何使用 COUNT(*) 在 GROUP BY 中包含一个不存在的值?

php - '&' 在参数名称之前

php - 将文本框内容回显到 POST 请求中不起作用

mysql - HQL 在子查询和子句中不起作用

php - 如何有效实现新闻通讯系统以防止重复发送电子邮件?

SQL:在单个字段中包含多个值的嵌套 SELECT