2011-01-13 12 views
6

Non riesco a execut script lungo la DOP genera un'eccezione:Come eseguire script mysql con variabili usando PHP :: PDO?

SQLSTATE[HY000]: General error 

Se posso inviare script che non contiene variabili funziona w/o problema. Lo stesso script viene eseguito sull'interfaccia phpmyadmin.

Ecco il mio frammento di codice:

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

Ecco alcune prove che non esegue dal DOP:

SET @ra_LMC:=80.9; 
SELECT @ra_LMC; 

Come devo execut con DOP gli script multilinea?

Grazie
Arman.

+0

Possiamo vedere come si presenta la query? –

+0

La query non riesce se esiste un operatore "set". Come scritto nell'esempio. – Arman

risposta

11

PDO non consente l'esecuzione di più istruzioni in una richiesta di query(). Ma la tua variabile @ra_LMC dovrebbe essere visibile nella connessione corrente, quindi puoi inserire la seconda linea (SELECT) in una nuova chiamata a query().

Per leggere un intero script, è necessario analizzare il file ed eseguire ogni istruzione con una chiamata a query().

6

PDO può eseguire solo una dichiarazione alla volta. È possibile eseguire lo SET e SELECT come 2 istruzioni separate. Oppure puoi impostare la variabile usando FROM.

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