2011-01-13 22 views
6

jestem w stanie EXECUT długi skrypt PDO zgłasza wyjątek:Jak wykonać skrypt mysql ze zmiennymi za pomocą PHP :: PDO?

SQLSTATE[HY000]: General error 

Gdybym przedstawić scenariusz, który nie zawiera zmiennych to działa w/o problemie. Ten sam skrypt działa na interfejsie phpmyadmin.

Tu jest mój urywek kodu:

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

Oto kilka testów, które nie wykonuje przez PDO:

SET @ra_LMC:=80.9; 
SELECT @ra_LMC; 

Jak mam EXECUT z PDO multi skryptów wiersza?

Dzięki
Arman.

+0

Czy możemy zobaczyć, jak wygląda twoje zapytanie? –

+0

Zapytanie nie powiedzie się, jeśli istnieje dowolny operator "set". Jest to napisane w przykładzie. – Arman

Odpowiedz

11

PDO nie pozwala na wykonanie wielu instrukcji w jednym zapytaniu(). Ale twoja zmienna @ra_LMC powinna być widoczna w bieżącym połączeniu, więc możesz umieścić drugą linię (SELECT) w nowym wywołaniu zapytania().

Aby odczytać cały skrypt, należy przeanalizować plik i uruchomić każdą instrukcję za pomocą wywołania query().

6

PDO może wykonywać tylko jedną instrukcję naraz. Możesz uruchomić SET i SELECT jako 2 oddzielne instrukcje. Lub możesz ustawić zmienną za pomocą FROM.

SELECT @ra_LMC FROM (SELECT @ra_LMC:=80.9) q 
Powiązane problemy