Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
4 / 4 / 2
Регистрация: 11.10.2007
Сообщений: 52
1

Получить в PHP OUTPUT параметры из процедуры MS SQL

05.09.2017, 00:03. Показов 2309. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Не получилось нигде найти пример получения кодом PHP OUTPUT параметров из процедуры MS SQL
В MS SQL всё отрабатывает правильно - процедура выдаёт значения выходных параметров (и в моём случае создаёт файл в папке).
T-SQL
1
2
3
4
5
6
7
8
CREATE PROCEDURE dbo.prcFILES_EXPORT
  @IDDOC UNIQUEIDENTIFIER, 
  @repFILES NVARCHAR(3000) OUTPUT,--перечень файлов, выгруженных во временную папку
  @repFILES_PATH NVARCHAR(3000) OUTPUT --перечень файлов + пути к ним, выгруженных во временную папку
AS
BEGIN
    SET NOCOUNT ON
...
в PHP пробовал писать очень по-разному, но ничего не получается. В т.ч. писал так - код отрабатывает (файл создаётся), но ни в выходные параметры, ни в $result, ни в $row ничего не записывается
PHP
1
2
3
4
5
6
7
    $query="EXEC dbo.prcFILES_EXPORT @IDDOC= :rprt, @repFILES=:fname OUTPUT, @repFILES_PATH=:fpathname OUTPUT";
    $result = $db->prepare($query)or die("Connection Error: ".($db->errorCode()));
    $result->bindParam(":rprt", $rprt);
    $result->bindParam(":fname", $fname,PDO::PARAM_STR);
    $result->bindParam(":fpathname", $fpathname,PDO::PARAM_STR);
    $result->execute() or die("Connection Error: ".($db->errorCode()));
    $row = $result->fetch();
Как получить значения этих OUTPUT параметров в PHP?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.09.2017, 00:03
Ответы с готовыми решениями:

Не возвращаются output-параметры из хранимой процедуры
у меня проблема: Обращаюсь к SQL Server Express через ODBC API. Хочу получить данные из хранимой...

Написать SQL, чтобы получить желаемый output
Нужно замочить задачу. Написать SQL, чтобы получить желаемый output. Problem: - Create a list...

Как получить параметры хранимой процедуры сервер firebird
Всем, привет! В IBExpert создал на сервере вот такую хранимую процедуру SET TERM ^ ; create or...

PHP + MS SQL. Как передать параметры в хранимую процедуру?
Как передать из PHP значения параметров для хранимой процедуры в MS SQL Server перед ее выполнением?

5
38 / 38 / 25
Регистрация: 14.12.2009
Сообщений: 202
05.09.2017, 07:43 2
Ни разу не пробовал, но на php.net написан вот такой пример показывающий подготовку перменных
PHP
1
$stmt->bindParam(1, $value, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 4000);
PDO::PARAM_INPUT_OUTPUT (integer)
Указывает, что параметр является INOUT параметром для хранимой процедуры. Для задания типа данных необходимо применить побитовое ИЛИ этой константы с константой типа PDO::PARAM_*.
0
4 / 4 / 2
Регистрация: 11.10.2007
Сообщений: 52
05.09.2017, 10:39  [ТС] 3
smatch, спасибо.
... не помогает
PHP
1
2
3
4
5
6
7
$query="CALL dbo.prcFILES_EXPORT (?,?,?)";
$result = $db->prepare($query)or die("Connection Error: ".($db->errorCode()));
$result->bindParam(1, $rprt);
$result->bindParam (2, $fname,PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT,3000);
$result->bindParam (3, $fpathname,PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT,3000);
$result->execute() or die("Connection Error: ".($db->errorCode()));
$row = $result->fetch();
Firebug выдаёт ошибку (на строку $result->execute()):
Fatal error: Uncaught PDOException: SQLSTATE[42000]: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Неправильный синтаксис около конструкции ".". in C:\MDOC\PCC\common\get_filelink.php on line 34

Если
PHP
1
$query="EXECdbo.prcFILES_EXPORT (?,?,?)"
то ошибка Fatal error: Uncaught PDOException: SQLSTATE[42000]: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Неправильный синтаксис около конструкции "@P1". in C:\MDOC\PCC\common\get_filelink.php on line 34

Есть Пример #4 Вызов хранимой процедуры с выходными параметрами: http://php.net/manual/ru/pdo.p... ements.php
Вроде бы делаю по нему, но ... не работает!?
0
38 / 38 / 25
Регистрация: 14.12.2009
Сообщений: 202
05.09.2017, 22:52 4
Лучший ответ Сообщение было отмечено NewEd как решение

Решение

для спасибо там сделали плюсики они сразу в карму
попробуй так
PHP
1
2
3
4
5
6
7
$query="exec prcFILES_EXPORT :rp, :fn, :ph";
$result = $db->prepare($query)or die("Connection Error: ".($db->errorCode()));
$result->bindParam(:rp, $rprt);
$result->bindParam (:fn, $fname,PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT,3000);
$result->bindParam (:ph, $fpathname,PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT,3000);
$result->execute() or die("Connection Error: ".($db->errorCode()));
$row = $result->fetch();
просто не сращивал никогда хранимки MSSQL с PDO
1
4 / 4 / 2
Регистрация: 11.10.2007
Сообщений: 52
06.09.2017, 00:26  [ТС] 5
Такой вариант тоже пробовал. После его отработки читаю выходную переменную.
PHP
1
echo ($fname);
выдаёт в Firebug вместо 'test_file' такую абракадабру.
DO?P�&>`�&> �&>? �&>0 �&>?��&>P �&>??@�&>X�&>@ }�&>@�@�"�&>�"�&>@@}�&>@@� �&>@`}�&>@@!�&>@�}�&>@@0!�&>@!�&>@�ڧ&>@@X!�&>p!�&>@�}�&> @@�!�&>@�}�&>@@�}�&>@@~�&>@@�!�&>@ ~�&>@@"�&> "�&>@�!�&>8"�&>�@P"�&>@�!�&>�!�&>h"�&>@�!�&>�"�&>@!�&>�"�& >@@� �&>� �&>@@~�&>B�Bh%�&>�%�&>@`~�&>BBX#�&>@�~�&>BB�#�&>@�~�&>BB�# �&>�#�&>@�~�&>BB�#�&>�#�&>@�~�&>BB$�&>@�&>B@ �&>B@@�&>BB`$�&>@`�&>BBx$�&>�$�&>BH$�&>�$�&>@��&>B B�$�&>�$�&>�B�$�&>B $�&>0$�&>%�&>B�#�&>0%�&>Bp#�&>P%�&>BB#�&>(#�&>@��&>C�C( �&>(�&>@��&>CC�%�&>@��&>CC&�&>@��&>CC0&�&>@&�&>@ۧ&>C CX&�&>p&�&>@ ��&>CC�&�&>@@��&>C@`��&>C@���&>CC�&�&>@���&>CC'�&> '�&>C�&�&>8'�&>@���&>CCP'�&>h'�&>�C�'�&>C�&�&>�&�&>�'�&>C �&�&>�'�&>C&�&>�'�&>CC�%�&>�%�&>@���&>E�E8)�&>P)�&>@��&>E E�(�&>@ ��&>EE�(�&>@@��&>EE�(�&>�(�&>@@ۧ&>EE�(�&>)�&>E�(�& > )�&>EE@(�&>X(�&>@`��&>F�Fp*�&>�*�&>@���&>FF�)�&>@���&>FF�) �&>@���&>FF*�&>*�&>@hۧ&>FF(*�&>@*�&>F�)�&>X*�&>FFx)�&> �)�&>�HX+�&>@�ۧ&>H@��&>H�H�*�&>H�*�&>+�&>H@+�&>H�*�&>�0 0�&>h �&>� �&>��&>�&>��&>�&>h�&>�&>(�&>� �&>�"�&>�%�&>((�&>`)�&>�*�&>h+�&>/��&>�+�&> ��&>��&>��&>���&>���&>��,�&>@�ۧ&>LL-�&>@�$�&>L@�ۧ&>L@���&>LLX-�&>�L@-�&>�-�&>p-�&>�-�&>@��&>LL�-�&>L0-�&>�-�&>@ ��&>NN.�&>@@��&>NN0.�&>@`��&>N@ܧ&>NNp.�&>�N�.�&>NH.�&>X. �&>�.�&>N .�&>�.�&>@���&>OO/�&>@���&>OO(/�&>@���&>O@���&>O@0ܧ&>OOh/�&>�/�&>�O�/�&>O@/�&>P/�&>�/�&>O/�&>�/�&>@��&>PP0�&>@ ��&>PP@0�&>@@��&>PPX0�&>h0�&>P00�&>�0�&>� >�&>��&>��&>��&>���&>���&>���&>���&>(��&>���&>���&>���&>�,�&>�-�&>�.�&>0�&>�0�&>�3�&>�5�&>�6�&>�7�&>�:�&>�<�&>(>�&>�>�&>X?�&>�?�&> H@�&>�P�&>@Q�&>�Q�&>pR�&>@`��&>SS�1�&>@S S�1�&>�1�&>@���&>SS2�&>@S S02�&>@2�&> S2�&>X2�&>�S�3�&>@Xܧ&>SS�2�&>@���&>S@���&>SS�2�&>@���&> SS 3�&>S3�&>83�&>�SH3�&>S�2�&>`3�&>S�2�&>�3�&>Sp2�&>�2�&>�S�3 �&>�4�&>�Tx4�&>@�ܧ&>TT84�&>@TTP4�&>`4�&>T4�&>@��&>UU�4�&> @�ܧ&>UU�4�&> U�4�&>�4�&>�U�5�&>@ ��&>UU@5�&>@�ܧ&>UUh5�&>UX5�&>�5�&>U�4�&>5�&>�U�5�&>@@��&> VV�5�&>@`��&>VV6�&>@���&>VV@6�&>V06�&>X6�&>@���&>VV�6�&> Vh6�&>�6�&>V6�&>�6�&>@���&>WW�6�&>@WW�6�&>7�&>�W�7�&>@��� &>WW`7�&>


в подключении к базе у меня прописано
PHP
1
$db->exec("set names utf8");
пробовал
PHP
1
echo (mb_convert_encoding($fname, 'utf-8', mb_detect_encoding($fpathname)));
получается не лучше:
DO?P?&>`?&> ?&>? ?&>0 ?&>???&>P ?&>??@?&>X?&>@ }?&>@?@?"?&>?"?&>@@}?&>@@? ?&>@`}?&>@@!?&>@?}?&>@@0!?&>@!?&>@?ڧ&>@@X!?&>p!?&>@?}?&> @@?!?&>@?}?&>@@?}?&>@@~?&>@@?!?&>@ ~?&>@@"?&> "?&>@?!?&>8"?&>?@P"?&>@?!?&>?!?&>h"?&>@?!?&>?"?&>@!?&>?"?& >@@? ?&>? ?&>@@~?&>B?Bh%?&>?%?&>@`~?&>BBX#?&>@?~?&>BB?#?&>@?~?&>BB?# ?&>?#?&>@?~?&>BB?#?&>?#?&>@?~?&>BB$?&>@?&>B@ ?&>B@@?&>BB`$?&>@`?&>BBx$?&>?$?&>BH$?&>?$?&>@??&>B B?$?&>?$?&>?B?$?&>B $?&>0$?&>%?&>B?#?&>0%?&>Bp#?&>P%?&>BB#?&>(#?&>@??&>C?C( ?&>(?&>@??&>CC?%?&>@??&>CC&?&>@??&>CC0&?&>@&?&>@ۧ&>C CX&?&>p&?&>@ ??&>CC?&?&>@@??&>C@`??&>C@???&>CC?&?&>@???&>CC'?&> '?&>C?&?&>8'?&>@???&>CCP'?&>h'?&>?C?'?&>C?&?&>?&?&>?'?&>C ?&?&>?'?&>C&?&>?'?&>CC?%?&>?%?&>@???&>E?E8)?&>P)?&>@??&>E E?(?&>@ ??&>EE?(?&>@@??&>EE?(?&>?(?&>@@ۧ&>EE?(?&>)?&>E?(?&> )?&>EE@(?&>X(?&>@`??&>F?Fp*?&>?*?&>@???&>FF?)?&>@???&>FF?) ?&>@???&>FF*?&>*?&>@hۧ&>FF(*?&>@*?&>F?)?&>X*?&>FFx)?&> ?)?&>?HX+?&>@?ۧ&>H@??&>H?H?*?&>H?*?&>+?&>H@+?&>H?*?&>?0 0?&>h ?&>? ?&>??&>?&>??&>?&>h?&>?&>(?&>? ?&>?"?&>?%?&>((?&>`)?&>?*?&>h+?&>/??&>?+?&> ??&>??&>??&>???&>???&>??,?&>@?ۧ&>LL-?&>@?$?&>L@?ۧ&>L@???&>LLX-?&>?L@-?&>?-?&>p-?&>?-?&>@??&>LL?-?&>L0-?&>?-?&>@ ??&>NN.?&>@@??&>NN0.?&>@`??&>N@ܧ&>NNp.?&>?N?.?&>NH.?&>X. ?&>?.?&>N .?&>?.?&>@???&>OO/?&>@???&>OO(/?&>@???&>O@???&>O@0ܧ&>OOh/?&>?/?&>?O?/?&>O@/?&>P/?&>?/?&>O/?&>?/?&>@??&>PP0?&>@ ??&>PP@0?&>@@??&>PPX0?&>h0?&>P00?&>?0?&>? >?&>??&>??&>??&>???&>???&>???&>???&>(??&>???&>???&>???&>?,?&>?-?&>?.?&>0?&>?0?&>?3?&>?5?&>?6?&>?7?&>?:?&>?(>?&>?>?&>X??&>???&>H@? &>?P?&>@Q?&>?Q?&>pR?&>@`??&>SS?1?&>@S S?1?&>?1?&>@???&>SS2?&>@S S02?&>@2?&> S2?&>X2?&>?S?3?&>@Xܧ&>SS?2?&>@???&>S@???&>SS?2?&>@???&>SS 3?&>S3?&>83?&>?SH3?&>S?2?&>`3?&>S?2?&>?3?&>Sp2?&>?2?&>?S?3 ?&>?4?&>?Tx4?&>@?ܧ&>TT84?&>@TTP4?&>`4?&>T4?&>@??&>UU?4?&> @?ܧ&>UU?4?&> U?4?&>?4?&>?U?5?&>@ ??&>UU@5?&>@?ܧ&>UUh5?&>UX5?&>?5?&>U?4?&>5?&>?U?5?&>@@??&> VV?5?&>@`??&>VV6?&>@???&>VV@6?&>V06?&>X6?&>@???&>VV?6?&> Vh6?&>?6?&>V6?&>?6?&>@???&>WW?6?&>@WW?6?&>7?&>?W?7?&>@??? &>WW`7?&>
0
38 / 38 / 25
Регистрация: 14.12.2009
Сообщений: 202
06.09.2017, 19:28 6
думаю стоит покопать чарсет в настройках MS SQL
0
06.09.2017, 19:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.09.2017, 19:28
Помогаю со студенческими работами здесь

Запуск процедуры SQL в PHP
Всем привет! Столкнулся с проблемой, с которой никогда не имел дело. Суть как бы проста, надо...

output параметр хранимой процедуры
эта тема уже поднималась, но все же :) процедура CREATE PROCEDURE . @city nvarchar(20),...

Получить картинку из базы Sql через php
Добрый день! Не могу найти статью, как получить и загрузить картинку в TImage зи sql через php))...

Используя sql-запрос и php, получить данные из базы *.dbf
возможно, используя sql-запрос и php, получить данные из базы *.dbf? смотрю дкументацию... вижу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru