Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP+Oracle) Помогите найти ошибку в коде??? / 20 сообщений из 20, страница 1 из 1
11.04.2006, 05:05:01
    #33657239
vista-rus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP+Oracle) Помогите найти ошибку в коде???
У меня тут понимание, то ли в php то ли oracle

Пишу в sqlplus
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SQL> select user_name,to_char(dt, 'dd.mm.yyyy hh:mi')  from Oracledb.Logoff where user_name='user';

USER_NAME
--------------------------------------------------------------------------------
TO_CHAR(DT
----------------
user
 11 . 11 . 2005   05 : 06 

user
 27 . 02 . 2006   11 : 35 

user
 28 . 02 . 2006   11 : 07 

Такой же запрос пишу в PHP...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
$stmt = ociparse($conn,"select USER_NAME,to_char(dt, 'dd.mm.yyyy hh:mi') from Oracledb.Logoff where USER_NAME='".$user."'");
ociexecute($stmt,OCI_DEFAULT);
echo "<table>\n";
$i= 1 ;
  while (ocifetch($stmt)){
    echo "<tr><td>".$i.
        "</td><td>".ociresult($stmt,"USER_NAME").
        "</td><td>".ociresult($stmt,"DT").
        "</td></tr>\n";
    $i++;
}
echo "</table>";
echo "<b>Всего строк: </b>".OCIRowCount($stmt);

Код: plaintext
1.
2.
3.
результат в браузере вижу такой
1	user	11-NOV-05
2	user	27-FEB-06
 Всего строк:  12

Все перепробовал, но результат один и тот же либо пустая колонка даты.
Где я ошибся?
...
Рейтинг: 0 / 0
11.04.2006, 10:16:35
    #33657537
oraweb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP+Oracle) Помогите найти ошибку в коде???
Попробуй
'DD.MM.YYY HH24:MI'
...
Рейтинг: 0 / 0
11.04.2006, 10:17:37
    #33657540
oraweb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP+Oracle) Помогите найти ошибку в коде???
Y забыл
'DD.MM.YYYY HH24:MI'
...
Рейтинг: 0 / 0
11.04.2006, 10:47:36
    #33657628
vista-rus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP+Oracle) Помогите найти ошибку в коде???
orawebY забыл
'DD.MM.YYYY HH24:MI'

пустая колонка (ничего не возвращает)..:(
...
Рейтинг: 0 / 0
11.04.2006, 12:15:17
    #33657915
oraweb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP+Oracle) Помогите найти ошибку в коде???
Однозначно с ПХП что-то не так, а что ? не спец.
...
Рейтинг: 0 / 0
11.04.2006, 12:36:07
    #33658007
4m@t!c
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP+Oracle) Помогите найти ошибку в коде???
Нормальное имя полю с текстом даты установите.
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
12.04.2006, 03:34:25
    #33659870
vista-rus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP+Oracle) Помогите найти ошибку в коде???
4m@t!cНормальное имя полю с текстом даты установите.
----------------------------------------
Артисты не приехали, приехали цыгане

менял поля на что-то все равно не выводится, start_dt нормальное имя поля?
...
Рейтинг: 0 / 0
12.04.2006, 03:42:23
    #33659871
vista-rus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP+Oracle) Помогите найти ошибку в коде???
orawebОднозначно с ПХП что-то не так, а что ? не спец.
похоже на то...

как извлечь список полей из ociresult($stmt,"DT") ? Дело в том, что при таком запросе
Код: plaintext
$stmt = ociparse($conn,"select USER_NAME, DT from Oracledb.Logoff where USER_NAME='".$user."'");

колонка заполняется, а так нет... Возможно ошибка в имени поля?

Код: plaintext
$stmt = ociparse($conn,"select USER_NAME,to_char(DT, 'dd.mm.yyyy hh:mi') from Oracledb.Logoff where USER_NAME='".$user."'");
...
Рейтинг: 0 / 0
12.04.2006, 09:48:34
    #33660164
vista-rus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP+Oracle) Помогите найти ошибку в коде???
Хм, проблема решилась, немного почитав описание функций oracle
вот текст, взят из http://ru.php.net/manual/ru/function.oci-result.php
Описание
mixed oci_result ( resource statement, mixed field )

oci_result() возвращает данные из поля field текущей строки результата (см. oci_fetch()). oci_result() возвращает данные в виде строк, кроме абстрактных типов (ROWID, LOB и FILE). В случае ошибки oci_result() возвращает FALSE.

В качестве параметра field вы можете использовать номер поля (начиная с 1) или его имя в верхнем регистре.

немного изменив PHP код
Код: plaintext
"</td><td>".ociresult($stmt,"DT").

на

Код: plaintext
"</td><td>".ociresult($stmt, 2 ).

результат

Код: plaintext
1.
1	user	11.11.2005 05:06
2	user	27.02.2006 11:35

Всем спасибо!
...
Рейтинг: 0 / 0
12.04.2006, 10:25:38
    #33660285
4m@t!c
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP+Oracle) Помогите найти ошибку в коде???
Нормальный алиас для поля пропишите и будет вам счастье.
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
12.04.2006, 10:29:41
    #33660299
vista-rus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP+Oracle) Помогите найти ошибку в коде???
4m@t!cНормальный алиас для поля пропишите и будет вам счастье.
----------------------------------------
Артисты не приехали, приехали цыгане

Объясни мне, что ты имеешь ввиду НОРМАЛЬНЫЙ ?
...
Рейтинг: 0 / 0
12.04.2006, 10:44:02
    #33660352
4m@t!c
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP+Oracle) Помогите найти ошибку в коде???
В поля запроса как называются?
USER_NAME и TO_CHAR(DT
А вы как к ним обращаетесь?
К первому полю USER_NAME - вам и возвращает его содержимое, потому что оно так и называется.
Ко второму полю DT - вам ничего не возвращает, потому что поле называется TO_CHAR(DT.
Дайте название колонке исходя из требования Oracle на имена полей. и обратитесь по имени, которое придумаете (start_dt - вполне подходит).
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
12.04.2006, 13:25:47
    #33661078
oraweb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP+Oracle) Помогите найти ошибку в коде???
4m@t!cВ поля запроса как называются?
USER_NAME и TO_CHAR(DT
Ко второму полю DT - вам ничего не возвращает, потому что поле называется TO_CHAR(DT.
----------------------------------------
Артисты не приехали, приехали цыгане

Да нет. TO_CHAR - это функция oracle. Преобразует полученный данные в указанном формате, в частности 'DD.MM.YYYY HH24:MI'.
...
Рейтинг: 0 / 0
12.04.2006, 13:36:29
    #33661137
4m@t!c
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP+Oracle) Помогите найти ошибку в коде???
oraweb
Да нет. TO_CHAR - это функция oracle. Преобразует полученный данные в указанном формате, в частности 'DD.MM.YYYY HH24:MI'.
Я понимаю, что это такое. Какое имя у поля, которое выдает дату? Как к нему обращаться?
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
12.04.2006, 14:10:47
    #33661277
oraweb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP+Oracle) Помогите найти ошибку в коде???
4m@t!c oraweb
Да нет. TO_CHAR - это функция oracle. Преобразует полученный данные в указанном формате, в частности 'DD.MM.YYYY HH24:MI'.
Я понимаю, что это такое. Какое имя у поля, которое выдает дату? Как к нему обращаться?
----------------------------------------
Артисты не приехали, приехали цыгане
Судя по запросу поле это dt
А конструкция TO_CHAR(dt, 'DD.MM.YYYY HH24:MI') говорит, что прежде чем вывести на экран, преобразуй пол. данн. в указ. формат.
...
Рейтинг: 0 / 0
12.04.2006, 15:21:50
    #33661625
4m@t!c
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP+Oracle) Помогите найти ошибку в коде???
Если бы название поля было DT , то тредстартера не возникло бы проблемы.
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
12.04.2006, 17:44:23
    #33662246
koc
koc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP+Oracle) Помогите найти ошибку в коде???
4m@t!c Прав, добавь алиас и будет тебе счастье
"select USER_NAME,to_char(dt, 'dd.mm.yyyy hh:mi') DT from Oracledb.Logoff where USER_NAME='".$user."'"
...
Рейтинг: 0 / 0
13.04.2006, 02:53:27
    #33662999
vista-rus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP+Oracle) Помогите найти ошибку в коде???
koc4m@t!c Прав, добавь алиас и будет тебе счастье
"select USER_NAME,to_char(dt, 'dd.mm.yyyy hh:mi') DT from Oracledb.Logoff where USER_NAME='".$user."'"

ДЕЙСТВИТЕЛЬНО помогло!!!
...
Рейтинг: 0 / 0
13.04.2006, 02:58:21
    #33663000
vista-rus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP+Oracle) Помогите найти ошибку в коде???
4m@t!cНормальный алиас для поля пропишите и будет вам счастье.
----------------------------------------
Артисты не приехали, приехали цыгане

Я не имел понятия насчет алиаса... и потому со своей проблемой никуда не смог двинуться.
P.S.
Хотя труднопроизносимый у тебя ник, но буду помнить....! :)
...
Рейтинг: 0 / 0
13.04.2006, 02:59:05
    #33663001
vista-rus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP+Oracle) Помогите найти ошибку в коде???
С П А С И Б О !
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP+Oracle) Помогите найти ошибку в коде??? / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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