Зпрос Oracle в PHP

bupych

Новичок
Зпрос Oracle в PHP

Зратсвуйте, господа.
Возникла такая ситуация:

В тавлице TABLE1 существует две записи с одинаковыми LAST_NAME, FIRST_NAME, MIDDLE_NAME, и с разными значениями полей ID, SIZE и DATE.
Поле ID генерируется, так что оно различно.

Одна запись сделана раньше другой, но поля DATE различны в обратном порядке. например:

2. ID=2357; SIZE=100; DATE=2007; <- последняя запись в таблице
1. ID=9942; SIZE=800; DATE=2008; <- первая запись в теблице


В случае когда я выбираю из таблицы нужную строку при помощи sqlplus, строка выбирается нормально. то есть:
select ID from TABLE1 where LAST_NAME = 'ИВАНОВ' and FIRST_NAME = 'ИВАН' and MIDDLE_NAME = 'ИВАНОВИЧ' and SIZE = 100;
возвращается нужный id, типа "2357".
Но когда я строю запрос в PHP, то строка не возвращается (без ошибки), то есть просто запрос ничего не находит.

Вот тот кусок кода построения запроса:

$req = "select ID from TABLE1";
$req .= " where FIRST_NAME = 'ИВАН'";
$req .= " and MIDDLE_NAME = 'ИВАНОВИЧ'";
$req .= " and LAST_NAME = 'ИВАНОВ'";
$req .= " and SIZE = 100";

$cur=ora_open($con);
$cur = ora_do($con,$req);
$row = array();
ora_fetch_into($cur, $row, ORA_FETCHINTO_ASSOC);

print_r($row)

После исполнения кода на экране видим:

-------------

Array
(
)

-------------

Недоумевая я решил попробывать в запросе поменять условие на "and SIZE > 0;"
и получил Array c "id = 2357"
При условии, что в таблице всего одна строка удовлетворяющая условиям. Но в таблице две строки с "SIZE > 0". То есть, как я понял, он выбрал последню строку в таблице.
Пробовал варианты:
"and SIZE > 0;" - найдена строка с id=2357 и SIZE=100;
"and SIZE > 100;" - ничего не найдено.
"and SIZE > 200;" - ничего не найдено.

Но если добавляем в код сортировку по полю DATE, то запрос начинает выбирать только строку со значениями "ID=9942" и "SIZE=800".
Добавляем: .req = " order by DATE"; То есть, опять же, как я понял, запрос выбрал последнюю строку сортировки.
"and SIZE > 0;" - найдена строка с id=9942 и SIZE=800;
"and SIZE > 100;" - найдена строка с id=9942 и SIZE=800;
...
"and SIZE > 800;" - ничего не найдено.

И наоборот c условием "<":
"and SIZE < 900;" - найдена строка с id=9942 и SIZE=800;
"and SIZE < 800;" - ничего не найдено.

Почему при строгом равенстве ничего не возвращается ?! И почему при условии "<" или ">" возвращается последняя строка сотрировки!?
Я в тупике и в шоке. не знаю куда дальше думать.
Господа хорошие, подскажите пажалста, где и куда копать.
Спасибо.
 

bupych

Новичок
Я не могу использовать oci* потому как стоит 8ой клиент.
 

tony2001

TeaM PHPClub
в таком случае, вряд ли кто-то сможет помочь.
могу только посочувствовать.
 
Сверху