ich ein Schema SQL-Datei (mit Syntaxfehler) haben, die mehrere Abfragen für Einstellungen DatenbankLehre (DBAL) Fehlerbehandlung während Ausführen mehrerer Abfragen
example.sql
CREATE TABLE IF NOT EXISTS `example` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` text COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
CREATExxxxxxxxxx TABLE IF NOT EXISTS `example2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` text COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
example.php
$sqlContent = file_get_contents("example.sql");
$stmt = $conn->prepare($sqlContent);
$result = $stmt->execute();
execute-Methode werfen keine Ausnahme auch, dass meine sql i nkorrekt. es Dokumentation sagt, es gibt false
bei einem Fehler zurück, aber es gibt true
zurück.
Wie sollte ich Exception Handling hier tun? Wie kann ich überprüfen, ob meine Anfrage einen Fehler aufweist?
Lehre DBAL benutzt den m ysqli Treiber. Ich habe den neuesten Code überprüft und der DBAL sollte eine Exception werfen, wenn Mysqlis Preparation false für die Syntaxfehler zurückgibt. Problem mit dem mysqli-Treiber? http://www.doctrine-project.org/api/dbal/2.5/source-class-Doctrine.DBAL.Driver.Mysqli.MysqliStatement.html#83-102 –
@MattS das Problem ist nicht in der Doctrine DBAL, es ist in PDO. Ich habe meine Antwort hinzugefügt. – Neodan