Mysql
 sql >> Base de données >  >> RDS >> Mysql

SQL Créer plusieurs tables à la fois

MySQL devient confus parce que vous ne délimitez pas vos requêtes. Ajouter un point-virgule après le premier CREATE déclaration :

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

Assurez-vous également que MySQL_QUERY est au début de la ligne avec aucun autre caractère, sauf peut-être un point-virgule , selon le Heredoc documents .

Étant donné que ce qui précède ne semble pas fonctionner, essayez ce code :

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

Vous pourriez utilisez mysqli_multi_query() (la version MySQL n'existe pas), mais vous devrez alors utiliser MySQLi. Le code ci-dessus renvoie le ET logique des deux requêtes, vous obtenez donc toujours un 0 renvoyé en cas d'échec.