2011-01-13 15 views
6

Soy incapaz de Execut guión largo de la DOP se produce una excepción:¿Cómo ejecutar el script mysql con variables usando PHP :: PDO?

SQLSTATE[HY000]: General error 

Si presento la escritura que no contiene las variables que se ejecuta w/o problema. La misma secuencia de comandos se ejecuta en la interfaz phpmyadmin.

Aquí es mi fragmento de código:

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

Aquí es alguna prueba de que no ejecute por DOP:

SET @ra_LMC:=80.9; 
SELECT @ra_LMC; 

Cómo me Execut con DOP los guiones de varias líneas?

Gracias
Arman.

+0

¿Vemos cómo es su consulta? –

+0

La consulta falla si existe un operador "set". Como está escrito en el ejemplo. – Arman

Respuesta

11

PDO no permite la ejecución de varias instrucciones en una solicitud de consulta(). Pero su variable @ra_LMC debe estar visible en la conexión actual, por lo que puede poner su segunda línea (SELECT) en una nueva llamada a query().

Para leer una secuencia de comandos completa, debe analizar el archivo y ejecutar cada instrucción con una llamada a query().

6

PDO solo puede ejecutar una declaración a la vez. Puede ejecutar ether SET y SELECT como 2 instrucciones separadas. O puede establecer la variable usando FROM.

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