Вот мой код:
$query = "CALL user_top_categories_score(?, 'ALL', 0, 1)"; $sth = $this->dbh->prepare($query); $sth->execute([$user_id]); $category = $sth->fetchAll(PDO::FETCH_ASSOC); $query = "CALL user_top_tags_score(?, 'ALL', 0, 3)"; $sth = $this->dbh->prepare($query); $sth->execute([$user_id]); $tags = $sth->fetchAll(PDO::FETCH_ASSOC);
Это порождает эту ошибку:
Fatal error: Uncaught PDOException: SQLSTATE [HY000]: Общая ошибка: 2014 Невозможно выполнить запросы, в то время как другие небуферизованные запросы активны. Рассмотрим использование PDOStatement :: fetchAll (). Кроме того, если ваш код будет работать только с mysql, вы можете включить буферизацию запросов, установив атрибут PDO :: MYSQL_ATTR_USE_BUFFERED_QUERY. в C: \ xampp \ htdocs \ myweb \ others \ user.php: 71 Трассировка стека: # 0 C: \ xampp \ htdocs \ myweb \ others \ user.php (71): PDO-> prepare ('CALL user_top_t .. . ') # 1 C: \ xampp \ htdocs \ myweb \ application \ other.php (24): user-> index () # 2 C: \ xampp \ htdocs \ myweb \ index.php (152): require_once (' C: \ xampp \ htdocs … ') # 3 {main} выбрано в C: \ xampp \ htdocs \ myweb \ others \ user.php в строке 71
Также я использовал closeCursor()
сразу после fetchAll()
на основе этого решения . Но, к сожалению, это порождает новую ошибку:
Предупреждение. Пакеты не работают. Ожидаемое 1 получено 9. Размер пакета = 7 в C: \ xampp \ htdocs \ myweb \ others \ user.php в строке 72
Предупреждение: PDO :: prepare (): сервер MySQL ушел в C: \ xampp \ htdocs \ myweb \ others \ user.php в строке 72
Неустранимая ошибка: Uncaught PDOException: SQLSTATE [HY000]: Общая ошибка: 2006 Сервер MySQL ушел в C: \ xampp \ htdocs \ myweb \ others \ user.php: 72 Трассировка стека: # 0 C: \ xampp \ htdocs \ myweb \ others \ user.php (72): PDO-> prepare ('CALL user_top_t …') # 1 C: \ xampp \ htdocs \ myweb \ application \ other.php (24): user-> index () # 2 C: \ xampp \ htdocs \ myweb \ index.php (152): require_once ('C: \ xampp \ htdocs …') # 3 {main} выбрано в C: \ xampp \ htdocs \ myweb \ others \ user .php в строке 72
Любая идея, как я могу исправить проблему?
Отмечено 1: Каждый из вышеперечисленных запросов работает отдельно. Я имею в виду, когда я называю одну процедуру, она работает.
Noted2: Каждая процедура возвращает набор результатов. Я имею в виду, что в этих процедурах есть SELECT
.