Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP + MySQL + call + out / 8 сообщений из 8, страница 1 из 1
06.09.2012, 23:23:13
    #37947495
Exproment
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP + MySQL + call + out
Добрый день!

Имеется необходимость получать выходные параметры из хранимых процедур. По беглому поиску нашли множество примеров как это можно осуществить... Однако.. даже самый простейший случай не работает... Прошу помочь разобраться !!!

Имеется настолько простая ХП, насколько только смог придумать(отрабатывает верно):
Код: sql
1.
2.
3.
4.
CREATE DEFINER=`root`@`%` PROCEDURE `test`(OUT ID VARCHAR(100))
BEGIN
	SET ID = 'ЭТО КРУТАЯ СТРОКА !!!';
    END$$



Вызываем из пхп следующим образом:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
$return_value ='нет значения';

$query = $dbh->prepare('CALL test(?)');
$query->bindParam(1, $return_value, PDO::PARAM_STR, 4000);
$query->execute();

var_dump($query);

echo '$return_value = '.$return_value;

(было нагло слизано из рунета)... И вот хоть убейте. не можем понять, почему $return_value остается со значением 'нет значения' ??? Может какие настройки драйвера курить ? Может очевидная ошибка где ?

Заранее спасибо =)
...
Рейтинг: 0 / 0
07.09.2012, 01:33:55
    #37947579
MikkiMouse
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP + MySQL + call + out
Exproment,

А вот так попробуй:
Код: php
1.
2.
3.
$dbh->query('CALL test(@param_out)');
$result = $dbh->query('SELECT @param_out');
print_r($result->fetchAll());
...
Рейтинг: 0 / 0
07.09.2012, 09:53:33
    #37947746
Exproment
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP + MySQL + call + out
MikkiMouse,

Спасибо за идею. Однако таким образом, я могу выходной параметр процедуры заменить на результирующий набор), т.е. функция тест превратиться в:
Код: sql
1.
2.
3.
4.
CREATE DEFINER=`root`@`%` PROCEDURE `test`()
BEGIN
	select 'ЭТО КРУТАЯ СТРОКА !!!';
    END$$



На самом деле решение через результирующий набор самое простое(и в тоже время неправильное)... и необходимо разобраться что за дела с этим pdo

Кстати, конфигураций у него как кот наплакал. Так что думаю дело не в них )
...
Рейтинг: 0 / 0
07.09.2012, 09:55:02
    #37947749
Exproment
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP + MySQL + call + out
MikkiMouse,

Спасибо за идею. Однако таким образом, я могу выходной параметр процедуры заменить на результирующий набор), т.е. функция тест превратиться в:
Код: sql
1.
2.
3.
4.
CREATE DEFINER=`root`@`%` PROCEDURE `test`()
BEGIN
	select 'ЭТО КРУТАЯ СТРОКА !!!';
    END$$



На самом деле решение через результирующий набор самое простое(и в тоже время неправильное)... и необходимо разобраться что за дела с этим pdo

Кстати, конфигураций у него как кот наплакал. Так что думаю дело не в них )
...
Рейтинг: 0 / 0
07.09.2012, 13:06:01
    #37948120
MikkiMouse
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP + MySQL + call + out
Exproment,

Вот здесь человек тоже описывает баг, который есть при использовании stored procs и PDO MySQL.

А здесь тоже пишут, что надо селектить выходной параметр процедуры (именно в случае MySQL).
Можете еще порыться в сети, может уже кто-то и решил эту проблему по человечески.
...
Рейтинг: 0 / 0
07.09.2012, 13:30:39
    #37948178
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP + MySQL + call + out
Код: php
1.
$query->bindParam(1, $return_value, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 4000);

???
...
Рейтинг: 0 / 0
07.09.2012, 14:56:18
    #37948400
MikkiMouse
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP + MySQL + call + out
?,

Рабочий пример приведите, пожалуйста, а не кусок кода с php.net.
...
Рейтинг: 0 / 0
11.09.2012, 12:33:02
    #37952350
Exproment
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP + MySQL + call + out
В общем разобрались. Эта ошибка давно известна и описана на баг трекере. В версии MySql 6.0 обещали исправить) так что прийдется переписывать на результирующий набор.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP + MySQL + call + out / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]