Mysql
 sql >> Database >  >> RDS >> Mysql

SQL Crea più tabelle contemporaneamente

MySQL si sta confondendo perché non stai delimitando le tue query. Aggiungi un punto e virgola dopo il primo CREATE dichiarazione:

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

Inoltre, assicurati MySQL_QUERY è all'inizio della riga con nessun altro carattere, tranne forse un punto e virgola , come da Heredoc documentazione .

Visto che quanto sopra non sembra funzionare, prova questo codice:

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

Potresti usa mysqli_multi_query() (la versione MySQL non esiste), ma dovresti usare MySQLi allora. Il codice sopra restituisce l'AND logico delle due query, quindi ottieni comunque un 0 restituito se uno fallisce.