2011-01-13 6 views
6

Ich bin nicht in der Lage lange Skript execut die gU löst eine Ausnahme:Wie mysql Skript mit Variablen mit PHP :: PDO ausführen?

SQLSTATE[HY000]: General error 

Wenn ich Skript einreichen, die keine Variablen enthält es läuft w/o Problem. Dasselbe Skript wird auf der phpmyadmin-Schnittstelle ausgeführt.

Hier ist mein Code-Schnipsel:

try { 
$dsn = "mysql:host=" . DB_SERVER . ";dbname=" . DB_DEFAULT; 
$db = new PDO($dsn, DB_USER, DB_PASS); 
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$q = $db->query($query); 
if (!$q) { 
echo $db->errorInfo(); 
    } else { 
     $rows = $q->fetchAll(PDO::FETCH_ASSOC); 
    } 
} catch (PDOException $e) { 
    var_dump($e); 
} 

Hier einigen Test ist, die von PDO nicht ausführen:

SET @ra_LMC:=80.9; 
SELECT @ra_LMC; 

Wie ich mit gU der Multi-Line-Skripte execut sollte?

Dank
Arman.

+0

Können wir sehen, wie Ihre Abfrage aussieht? –

+0

Die Abfrage schlägt fehl, wenn ein "set" -Operator existiert. Wie im Beispiel beschrieben. – Arman

Antwort

11

PDO erlaubt nicht die Ausführung mehrerer Anweisungen in einer Abfrage() -Anfrage. Aber Ihre @ra_LMC-Variable sollte in der aktuellen Verbindung sichtbar sein, damit Sie Ihre zweite Zeile (SELECT) in einen neuen query() -Aufruf einfügen können.

Um ein ganzes Skript zu lesen, müssen Sie die Datei analysieren und jede Anweisung mit einem Aufruf von query() ausführen.

6

PDO kann jeweils nur eine Anweisung ausführen. Sie können die SET und SELECT als 2 separate Anweisungen ausführen. Oder Sie können die Variable mit FROM setzen.

SELECT @ra_LMC FROM (SELECT @ra_LMC:=80.9) q