2017-04-18 6 views
0

Ich bin mit OOP mysqli rum. Und ich stolperte über dieses Problem:SQL-Abfrage funktioniert nicht in PHP, funktioniert aber in phpmyadmin

Es gab einen Fehler beim Ausführen der Abfrage [Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MariaDB-Serverversion entspricht, damit die richtige Syntax in der Nähe von 'CREATE TABLE WENN NOT EXISTS engine verwendet wird. users (ID INT (11) NOT NULL, USERNAME 'at line 1]

Dies ist der PHP-Code.

function InstallDB($db){ 
    $sql = 
    "CREATE DATABASE IF NOT EXISTS `$this->dbname`; ". 
    "CREATE TABLE IF NOT EXISTS `$this->dbname`.`$this->users` (". 
    "`ID` INT(11) NOT NULL, ". 
    "`USERNAME` varchar(60) NOT NULL,". 
    "`PASSWORD` varchar(60) NOT NULL,". 
    "`EMAIL` varchar(100) NOT NULL,". 
    "`IMAGE` varchar(250) NULL,". 
    "`LEVEL` INT(11) NOT NULL DEFAULT '1'". 
    ") ENGINE=InnoDB DEFAULT CHARSET=utf8;". 

    "CREATE TABLE IF NOT EXISTS `$this->dbname`.`$this->settings` (". 
    "`DOMAIN` varchar(60) NOT NULL,". 
    "`SLOGAN` varchar(255) NOT NULL,". 
    "`EMAIL` varchar(100) NOT NULL". 
    ") ENGINE=InnoDB DEFAULT CHARSET=utf8;"; 

    if(!$result = $db->query($sql)){ 
     die('SQL['.$sql.']<br>There was an error running the query [' . $db->error . ']<br>'); 
    } 

    echo "Installed!<br>"; 
} 

versucht, verschiedene Anführungszeichen, kein Glück wiederholte ich auch die $ sql , kopiert und ausgeführt in phpmyadmin, es funktionierte perfekt.Aber noch nichts in PHP tut. Danke.

+0

Warum die ganze Verkettung? Vereinfachen Sie Ihren Code. PHP erlaubt Zeilenumbrüche in Strings. benutze sie. –

+0

Ich denke, das Problem mit dem Mehrfachbefehl in einer Abfrage, weil die Fehlermeldung aus der zweiten Zeile erschien. – Peter

+0

@JohnConde Dies ist nur das Ergebnis mehrerer Dinge zu versuchen: S – Morsus

Antwort

1

Verwenden Sie stattdessen multi_query Abfrage, weil Sie mehrere Abfrage nicht nur eine möchten. Wie Sie können Siehe die Iss Sie erschienen sofort nach der ersten Abfrage.

http://php.net/manual/en/mysqli.multi-query.php

+0

Ja, das hat funktioniert. Ich dachte darüber nach, ich googelte sogar, aber alles, was ich finden konnte, waren Transaktionen, die ich nicht verwenden wollte. Vielen Dank. – Morsus

+0

Könnten Sie meine Antwort bitte als richtige Antwort akzeptieren? – Peter

+1

Sicher, es gab eine Abklingzeit von 2 Minuten, also konnte ich es nicht sofort machen. Danke nochmal. – Morsus

Verwandte Themen