2011-01-13 29 views
6

Uzun komut dosyasını çalıştırılamıyorum pdo bir istisna atar:PHP :: PDO kullanarak değişkenlerle mysql betiği nasıl çalıştırılır?

SQLSTATE[HY000]: General error 

Değişkenleri içermeyen bir komut dosyası gönderirse, sorunlu çalışır. Aynı komut dosyası phpmyadmin arabiriminde çalışır.

İşte kod snippet'ım:

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

Burada PDO tarafından yürütülmeyen bir test var:

SET @ra_LMC:=80.9; 
SELECT @ra_LMC; 

Çok satırlı betiklerle pdo ile nasıl çalışmalıyım?

Teşekkürler
Arman.

+0

Sorgunuzun neye benzediğini görebilir miyiz? –

+0

Herhangi bir "ayarlanmış" operatör varsa, sorgu başarısız olur. – Arman

cevap

11

PDO bir sorgu() isteğe birden tabloların yürütülmesine izin vermez. Eğer yeni bir sorgu() çağrısı içine ikinci çizgi (SEÇ) koyabilirsiniz böylece Ama @ra_LMC değişken akım bağlantılı görünür olmalıdır.

bir bütün senaryoyu okumak için,) (dosyayı ayrıştırmak ve sorgulamak için bir çağrı ile her bir ifadeyi çalıştırmak zorunda.

6

PDO yalnızca bir seferde bir deyimi yürütebilirsiniz. SET ve SELECT'u 2 ayrı deyim olarak çalıştırabilirsiniz. Ya da FROM kullanarak değişkeni ayarlayabilirsiniz.

SELECT @ra_LMC FROM (SELECT @ra_LMC:=80.9) q 
İlgili konular