Я не могу выполнить длинный скрипт, pdo выдает исключение:
SQLSTATE[HY000]: General error
Если я отправляю скрипт, который не содержит переменных, он запускается без проблемы. Тот же скрипт работает на интерфейсе phpmyadmin.
Вот мой фрагмент кода:
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); }
Вот несколько тестов, которые не выполняются PDO:
SET @ra_LMC:=80.9; SELECT @ra_LMC;
Как я должен выполнить с pdo многострочные скрипты?
благодаря
Арман.
PDO не разрешает выполнение нескольких операторов в одном запросе query (). Но ваша переменная @ra_LMC должна быть видимой в текущем соединении, поэтому вы можете поместить вторую строку (SELECT) в новый запрос ().
Чтобы прочитать весь скрипт, вам нужно проанализировать файл и запустить каждый оператор с вызовом query ().
PDO может выполнять только один оператор за раз. Вы можете просто запустить SET
и SELECT
как два отдельных оператора. Или вы можете установить переменную с помощью FROM
.
SELECT @ra_LMC FROM (SELECT @ra_LMC:=80.9) q