Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / DB2+PHP+APACHE+Windows / 12 сообщений из 12, страница 1 из 1
09.08.2010, 10:58
    #36781628
atreides
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2+PHP+APACHE+Windows
Доброго времени суток, уважаемые! Столкнулся с проблемой выдачи результатов запроса хранимой процедуры 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
09.08.2010, 11:07
    #36781658
DB2+PHP+APACHE+Windows
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
09.08.2010, 13:32
    #36782038
atreides
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2+PHP+APACHE+Windows
код такой
...
Рейтинг: 0 / 0
09.08.2010, 13:33
    #36782041
atreides
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2+PHP+APACHE+Windows
код такой
<?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
12.08.2010, 14:08
    #36788356
atreides
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2+PHP+APACHE+Windows
пробую через 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
30.08.2010, 15:45
    #36819384
atreides
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2+PHP+APACHE+Windows
ничего про параметры там не нашел
...
Рейтинг: 0 / 0
30.08.2010, 16:57
    #36819584
DB2+PHP+APACHE+Windows
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
31.08.2010, 08:59
    #36820346
atreides
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2+PHP+APACHE+Windows
Вот, вроде начал понимать суть проблемы, может 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
31.08.2010, 11:15
    #36820576
DB2+PHP+APACHE+Windows
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
01.09.2010, 08:26
    #36822752
atreides
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2+PHP+APACHE+Windows
Спасибо огромное! А где можно модули IBM_DB2 и PDO скачать, а то я в настройках раскомменитровал в php.ini и библиотеки в system32 закинул, но PHP отказывается их видеть, может, есть установочники какие готовые? В IBM_DB2 инициация подключения, как и через odbc?
...
Рейтинг: 0 / 0
01.09.2010, 11:14
    #36823119
jack_nsk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2+PHP+APACHE+Windows
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
01.09.2010, 11:17
    #36823129
DB2+PHP+APACHE+Windows
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
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / DB2+PHP+APACHE+Windows / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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