Перерыл гугл, но ничего стоящего не нашёл. Может проблема и покажется ламерской, но всё же...
Есть процедура в 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
$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. Нифига не работает
var_dump($this->_db);
$sql = 'CALL pGetGoodsList()';
$stmt = $this->_db->query($sql);
var_dump($stmt);
Результат: object(PDO)#2 (0) { } bool(false)
Пляски с бубном уже пару часов продолжаются...