我需要同时创建多个表。我很难想出正确的方法来完成这件事。目前我的脚本如下:

  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);
}

另外,根据Heredoc documentation,确保MySQL_QUERY在行首没有其他字符,除了分号之外。
鉴于上面的代码似乎不起作用,请尝试以下代码:
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版本不存在),但是你必须使用MySQL。上面的代码返回两个查询的逻辑和,因此如果一个查询失败,仍然会返回0

关于php - SQL一次创建多个表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8766865/

10-14 14:05
查看更多