php oci_execute pattern для sql - PullRequest
       5

php oci_execute pattern для sql

0 голосов
/ 22 марта 2012

У меня есть простой запрос в PHP на Oracle:

    $query='select u.username,u.lastname,u.firstname,c.event,c.reason 
    from users u, events c 
    where c.created_by=u.user_id and 
    u.username!="foo" and 
    c.event > "2012-01-01"';

это прекрасно проходит через oci_parse ....

но существует перевод, который должен произойти, чтобы oci_execute не подавил «неверный идентификатор» для условий. Приведенный выше запрос работает нормально, если я уберу из выражения «and u.username! =» Foo »и c.event>« 2012-01-01 », например:

    $query='select u.username,u.lastname,u.firstname,c.event,c.reason 
    from users u, events c 
    where c.created_by=u.user_id';

Как правильно структурировать оператор, чтобы получить условия пользователя и даты, передаваемые в oci_execute?

1 Ответ

0 голосов
/ 22 марта 2012

В Oracle строки разделяются одинарными кавычками ', а идентификаторы - двойными кавычками ", поэтому ваш запрос должен выглядеть следующим образом:

$query='select u.username,u.lastname,u.firstname,c.event,c.reason 
from users u, events c 
where c.created_by=u.user_id and 
u.username!=\'foo\' and 
c.event > \'2012-01-01\'';

Для идентификации объектов вы должны использовать двойные кавычкисо смешанными именами, например:

CREATE TABLE "testTable" (id number);

SELECT * FROM testTable ; /* fails with ORA-00942*/

SELECT * FROM "testTable"; /* succeeds */
...