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

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

Имеется настолько простая ХП, насколько только смог придумать(отрабатывает верно):
Код: 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
PHP + MySQL + call + out
    #37947579
MikkiMouse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Exproment,

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

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



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

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

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



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

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

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

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

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

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


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