Mysql PDO+MySQL+Хранимые процедуры (Проблема с SELECT)

Gantsev

Новичок
Доброго времени суток!
Перерыл гугл, но ничего стоящего не нашёл. Может проблема и покажется ламерской, но всё же...

Есть процедура в MySQL

CREATE PROCEDURE pGetGoodsList()
BEGIN
SELECT id,name FROM goods ORDER BY name;
END

Если запускать через консоль выдаёт всё нормально
mysql> CALL pGetGoodsList();
+----+-----------------------------+
| id | name |
+----+-----------------------------+
| 5 | Велосипеды |
| 3 | Горшки |
| 1 | Игровые наборы |
| 4 | Коляски |
| 2 | Памперсы |
+----+-----------------------------+
5 rows in set (0.00 sec)

По старинке выводим через php
PHP:
$db = mysql_connect('localhost', '***', '***');
mysql_select_db('***');
$q = mysql_query('CALL pGetGoodsList()');
while($res = mysql_fetch_assoc($q))
var_dump($res);
Результат:
array(2) { ["id"]=> string(1) "5" ["name"]=> string(10) "??????????" } array(2) { ["id"]=> string(1) "3" ["name"]=> string(6) "??????" } array(2) { ["id"]=> string(1) "1" ["name"]=> string(14) "??????? ??????" } array(2) { ["id"]=> string(1) "4" ["name"]=> string(7) "???????" } array(2) { ["id"]=> string(1) "2" ["name"]=> string(8) "????????" }

На кодировку внимание не обращаю, ибо не в ней суть. Факт в том, что SELECT отрабатывает.

Но вот с PDO затык. Перепробовал prepare/execute, query. Нифига не работает
PHP:
var_dump($this->_db);
$sql = 'CALL pGetGoodsList()';
$stmt = $this->_db->query($sql);
var_dump($stmt);
Результат: object(PDO)#2 (0) { } bool(false)

Пляски с бубном уже пару часов продолжаются...
 

Gantsev

Новичок
PHP:
$stmt = $this->_db->prepare('CALL pGetGoodsList()');
$stmt->execute();
if (!is_object($stmt))
   throw new Exception('Ошибка процедуры pGetGoodsList(). Line: ' . __LINE__);
$goods = $stmt->fetchAll();
var_dump($goods);
array(0) { }
 

fixxxer

К.О.
Партнер клуба
С обычным pdo->query() должно работать
если не работает - смотреть ерроры или включить pdo exceptions
 

Gantsev

Новичок
С обычным pdo->query() должно работать
если не работает - смотреть ерроры или включить pdo exceptions
Спасибо, помогло!

в PDOException не отлавливал, поставил
self::$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);

и вылезло
Warning: PDO::query(): SQLSTATE[42000]: Syntax error or access violation: 1370 execute command denied to user 'toys_vikom_guest'@'localhost' for routine 'toys_vikom.pGetGoodsList' in /var/www/libs/Catalog.class.php on line 30

Ошибку понял =)
 
Сверху