mySQL Fehler #1064 aber nicht im PMA

Duergy

Mitglied
Hallo ihr,

ich habe mal wieder ein kleines Problem.
Ich erstelle gerade eine Installations PHP
Dort soll auch eine Tabelle erstellt werden

PHP:
if($db->query("
CREATE TABLE IF NOT EXISTS `config` (`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `projektname` VARCHAR(255) NOT NULL, `projekturl` VARCHAR(255) NOT NULL, `projektroot` VARCHAR(255) NOT NULL, `projektmail` VARCHAR(255) NOT NULL, `installed` DATETIME NOT NULL) ENGINE = MyISAM;
INSERT INTO `config` (`id`, `projektname`, `projekturl`, `projektroot`, `projektmail`, `installed`) VALUES (NULL, `".mysql_real_escape_string($_POST['projektname'])."`, `".mysql_real_escape_string($_POST['projekturl'])."`, `".mysql_real_escape_string($_POST['projektroot'])."`, `".mysql_real_escape_string($_POST['projektmail'])."`, NOW())","TRUE")
)
{
echo msg("success","Installation erfolgreich!");
}
else{
echo msg("error","Installation nicht erfolgreich!");
}

Führe ich die setup.php aus schmeißt er mir aber folgendes raus
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO `config` (`id`, `projektname`, `projekturl`, `projektroot`, `' at line 2

Ich lasse mir zusätzlich noch die $query anzeigen welche wie folgt aussieht:
Code:
CREATE TABLE IF NOT EXISTS `config` (`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `projektname` VARCHAR(255) NOT NULL, `projekturl` VARCHAR(255) NOT NULL, `projektroot` VARCHAR(255) NOT NULL, `projektmail` VARCHAR(255) NOT NULL, `installed` DATETIME NOT NULL) ENGINE = MyISAM;
INSERT INTO `config` (`id`, `projektname`, `projekturl`, `projektroot`, `projektmail`, `installed`) VALUES (NULL, 'Projekt.de', 'http://Projekt.de', 'C:/xampp/htdocs', 'ich@Projekt.de', NOW())

Ein blick ins PMA zeigt das er CREATE erledigt hat aber nicht INSERT.

Wenn ich jetzt genau den Code oben im PMA ausführe läuft es durch und er macht sowohl CREATE als auch INSERT

Wo ist mein Fehler?
 
Hallo!

Hinter NOW() ist noch eine 2. schliessende Klammer, dort hören also die Values auf.
Was Du mit dem Rest
PHP:
","TRUE")
anfängst, musst Du selbst entscheiden (jedoch ist die schliessende Klammer am Ende der Zeile notwendig).

Gruss Dr Dau
 
Moin,

du willst da beide Queries in einem Rutsch ausführen, was nicht geht.
Es mag zwar so aussehen, als ob es geht, weil PMA es macht, ist aber nicht so....(zumindest nicht in deiner MySQL-Version, ich glaube gelesen zu Haben, dass es geplant ist für die Zukunft)
PMA splittet deine Eingabe auch und führt dort mehrere Queries durch.

Ergo:
Code:
$db->query('CREATE TABLE....;');
$db->query('INSERT....;');
...statt
Code:
$db->query('CREATE TABLE....;INSERT....;')
 
Zurück