powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / DB2+PHP+APACHE+Windows
12 сообщений из 12, страница 1 из 1
DB2+PHP+APACHE+Windows
    #36781628
atreides
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток, уважаемые! Столкнулся с проблемой выдачи результатов запроса хранимой процедуры DB2 средствами PHP. Вызов процедуры в Quest Cental проход нормально, в PHP выдает ошибку. Хочу отрисовтаь из всех полей ток два определенных. Вот код PHP.
<?php
$base="***";
$name="***";
$password="***";
$conn=odbc_connect($base,$name,$password) or die(odbc_errormsg());
$sql=odbc_exec($conn, "call LSOM02.GET_OTPR_PAYER ('2010-07-30-00.00.00', '2010-07-31-00.00.00', 100027162, 0,?,?)") or die(odbc_errormsg());
$row=odbc_fetch_array($sql);
do
{
echo $row['ID'];
echo $row['KODPL'];
}
while ($row=odbc_fetch_array($sql));
odbc_close($conn);
?>
Как заметили в конце запроса стоит два параметра под знаками ?. В БД у меня права только на вызов процедурки. Может еще какие библиотеки вкрутить в PHP?
...
Рейтинг: 0 / 0
DB2+PHP+APACHE+Windows
    #36781658
atreides,

Документация рулит!
Внимательно читаем последний абзац про Unified ODBC : Introduction to PHP application development for DB2

А это собственно про вызов хранимых процедур:
Calling stored procedures with OUT or INOUT parameters in PHP (ibm_db2)
Calling stored procedures with OUT or INOUT parameters in PHP (PDO)
...
Рейтинг: 0 / 0
DB2+PHP+APACHE+Windows
    #36782038
atreides
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
код такой
...
Рейтинг: 0 / 0
DB2+PHP+APACHE+Windows
    #36782041
atreides
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
код такой
<?php
$base="***";
$name="***";
$password="***";
$conn=odbc_connect($base,$name,$password) or die(odbc_errormsg());
$sql=odbc_exec($conn, "call LSOM02.GET_OTPR_PAYER ('2010-07-30-00.00.00', '2010-07-31-00.00.00', 100027162, 0,?,?)") or die(odbc_errormsg());
$row=odbc_fetch_array($sql);
do
{
echo $row['ID'];
echo $row['KODPL'];
echo $row['DTO'];
echo $row['STO'];
echo $row['STN'];
echo $row['STNP'];
echo $row['NOMD'];
echo $row['KATOTP'];
echo $row['NOMVAG'];
echo $row['VESGR'];
echo $row['KODGRNSI'];
echo $row['KODGRGNG'];
echo $row['SUMMA'];
echo $row['KODGO'];
echo $row['OKPOGO'];
echo $row['KODGP'];
echo $row['OKPOGP'];
echo $row['ISKL'];
echo $row['RMONTH'];
echo $row['STRN'];
echo $row['PRIN_VK'];
echo $row['GRUZOPOD'];
echo $row['DORO'];
echo $row['DORNP'];
echo $row['DORN'];
}
while ($row=odbc_fetch_array($sql));
odbc_close($conn);
?>

посылает по ошибке Warning: odbc_exec() [function.odbc-exec]: SQL error: [IBM][CLI Driver] CLI0100E Wrong number of parameters. SQLSTATE=07001, SQL state 07001 in SQLExecDirect in D:\home\localhost\www\php\my_DB.php on line 17
[IBM][CLI Driver] CLI0100E Wrong number of parameters. SQLSTATE=07001.

щас почитаю
...
Рейтинг: 0 / 0
DB2+PHP+APACHE+Windows
    #36788356
atreides
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пробую через ODBC посылает по Warning: odbc_exec() [function.odbc-exec]: SQL error: [IBM][CLI Driver] CLI0100E Wrong number of parameters. SQLSTATE=07001, SQL state 07001 in SQLExecDirect in D:\home\localhost\www\php\DB2.php on line 19
[IBM][CLI Driver] CLI0100E Wrong number of parameters. SQLSTATE=07001. 19 строка у меня - $sql=odbc_exec($conn, "call LSOM02.GET_OTPR_PAYER ('2010-07-30-00.00.00', '2010-07-31-00.00.00', 100027162, 0,?,?)") or die(odbc_errormsg());

как-то криво я параметры передаю?
...
Рейтинг: 0 / 0
DB2+PHP+APACHE+Windows
    #36819384
atreides
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ничего про параметры там не нашел
...
Рейтинг: 0 / 0
DB2+PHP+APACHE+Windows
    #36819584
atreides,

Что непонятно в коде, который приведен в примере?
Cсылка на пример (ее уже давал выше): Calling stored procedures with OUT or INOUT parameters in PHP (ibm_db2)
Код из примера:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
$sql = 'CALL match_animal(?, ?)';
$stmt = db2_prepare($conn, $sql);

$second_name = "Rickety Ride";
$weight =  0 ;

db2_bind_param($stmt,  1 , "second_name", DB2_PARAM_INOUT);
db2_bind_param($stmt,  2 , "weight", DB2_PARAM_OUT);

print "Values of bound parameters _before_ CALL:\n";
print "  1: {$second_name} 2: {$weight}\n";

db2_execute($stmt);

print "Values of bound parameters _after_ CALL:\n";
print "  1: {$second_name} 2: {$weight}\n";

В вашем случае будет примерно так (предполагаю, что возвращается два параметра и курсор):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
$sql = 'call LSOM02.GET_OTPR_PAYER(?,?,?,?,?,?)';
$stmt = db2_prepare($conn, $sql);

$stamp1 = "2010-07-30-00.00.00";
$stamp2 = "2010-07-31-00.00.00";
$num1 =  100027162 ;
$num2 =  0 ;
$out1 =  0 ;
$out2 =  0 ;

db2_bind_param($stmt,  1 , "stamp1", DB2_PARAM_IN);
db2_bind_param($stmt,  2 , "stamp2", DB2_PARAM_IN);
db2_bind_param($stmt,  3 , "num1", DB2_PARAM_IN);
db2_bind_param($stmt,  4 , "num2", DB2_PARAM_IN);
db2_bind_param($stmt,  5 , "out1", DB2_PARAM_OUT);
db2_bind_param($stmt,  6 , "out2", DB2_PARAM_OUT);

print "Values of bound parameters _before_ CALL:\n";
print "  1: {$stamp1} 2: {$stamp2} 3: {$num1} 4: {$num2} 5:{$out1} 6:{$out2}\n";

if (db2_execute($stmt)) 
{
  print "Values of bound parameters _after_ CALL:\n";
  print "  1: {$stamp1} 2: {$stamp2} 3: {$num1} 4: {$num2} 5:{$out1} 6:{$out2}\n";
  print "Results:\n";
  while ($row = db2_fetch_array($stmt)) 
  {
    print "{$row[0]}, {$row[1]}, {$row[2]}\n";
  }
}
...
Рейтинг: 0 / 0
DB2+PHP+APACHE+Windows
    #36820346
atreides
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот, вроде начал понимать суть проблемы, может PHP не понимает, какие выходные данные и куда выводить?
$sql=odbc_exec($conn, "call LSOM02.GET_OTPR_PAYER ('2010-07-30-00.00.00', '2010-07-31-00.00.00', 100027162, 0,?,?)") or die(odbc_errormsg()); - вот тут стоят вопросы, может подсунуть туда переменные и вывести их?
...
Рейтинг: 0 / 0
DB2+PHP+APACHE+Windows
    #36820576
atreides,

Цитирую еще раз выдержку из документации
http://publib.boulder.ibm.com/infocenter/db2luw/v9/topic/com.ibm.db2.udb.apdv.php.doc/doc/c0021523.htmA third extension, Unified ODBC, has historically offered access to DB2 database systems. It is not recommended that you write new applications with this extension because ibm_db2 and PDO_ODBC both offer significant performance and stability benefits over Unified ODBC. The ibm_db2 extension API makes porting an application that was previously written for Unified ODBC almost as easy as globally changing the odbc_ function name to db2_ throughout the source code of your application.
Откажитесь от Unified ODBC (odbc_exec) в пользу ibm_db2 (для простоты перехода с odbc) или PDO (предпочтительно) и будет вам счастье.
...
Рейтинг: 0 / 0
DB2+PHP+APACHE+Windows
    #36822752
atreides
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо огромное! А где можно модули IBM_DB2 и PDO скачать, а то я в настройках раскомменитровал в php.ini и библиотеки в system32 закинул, но PHP отказывается их видеть, может, есть установочники какие готовые? В IBM_DB2 инициация подключения, как и через odbc?
...
Рейтинг: 0 / 0
DB2+PHP+APACHE+Windows
    #36823119
jack_nsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
atreidesА где можно модули IBM_DB2 и PDO скачать, а то я в настройках раскоменитровал в php.ini и библиотеки в system32 закинул, но PHP отказывается их видеть, может, есть установочники какие готовые? В IBM_DB2 инициация подключения, как и через odbc?

хорошая ссылка про инсталяцию :)
оттуда уходишь по ссылке авторhttp://sourceforge.net/projects/db2mc/files/
качаешь из раздела IBM_DB2 PHP Driver for Windows подходящий для своей версии ПХП архив
разворачиваешь библиотеку из архива в директорию {php_install_dir}\ext
добавляешь или снимаешь комменты со строк в php.ini
[PHP_IBM_DB2]
extension=php_ibm_db2.dll
перепускаешь аппач
...
Рейтинг: 0 / 0
DB2+PHP+APACHE+Windows
    #36823129
atreides,

Ссылки на аналогичные темы в форуме:
Где взять рабочую версию "php_ibm_db2.dll"?
DB2 Connect 9.5 + PHP 5.2.x + Apache 2.2.x + Windows

NTS-библиотека идет в составе клиента версии 9.5.
Более новые библиотеки (TS и NTS) выложены здесь : http://downloads.php.net/pierre/
PHP нужно настроить согласно документации : Setting up the PHP environment on Windows

PHP DB2 : Introduction to PHP application development for DB2
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / DB2+PHP+APACHE+Windows
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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