@Dark_Dante

PDO и хранимые процедуры. Почему не работает?

Здравствуйте.
Есть mysql база. Есть три хранимых процедуры в ней.
Первая процедура возвращает нам ID по которому вторая процедура что то там в базе ищет и возвращает новый ID, который передается в третью процедуру
Как то так в общем

$sql=new PDO("вот_коннектимся_к_базе");
$stm1=$sql->prepare('CALL proc1');
$stm1->execute();
$res1=$stm1->fetchAll(PDO::FETCH_ASSOC);

$stm2=$sql->prepare('CALL proc2(:id)');
$stm2->execute(array(':id'=>$res1[0]['id']));
$res2=$stm2->fetchAll(PDO::FETCH_ASSOC);

$stm3=$sql->prepare('CALL proc3(:id)');
$stm3->execute(array(':id'=>$res2[0]['id']));
$res3=$stm3->fetchAll(PDO::FETCH_ASSOC);


В общем первая процедура отрабатывает нормально

А вторая и третья ничего не выдают. Пустой массив.
Если вместо подготовленных запросов использовать query то выводит такую ошибку
General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.


Установка атрибута PDO::MYSQL_ATTR_USE_BUFFERED_QUERY в true не помогает
Слышал что есть какие то нюансы с работой PDO и хранимыми процедурами. Типа там какая то ошибка драйвера или что то типа того. И есть какой то костыль чтобы этот нюанс обойти.
Как победить эту штуку?
  • Вопрос задан
  • 748 просмотров
Решения вопроса 1
mahoho
@mahoho
Full stack certified PHP developer.
Закрывайте курсор после фетча.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы