Шаблон php oci_execute для sql

У меня есть простой запрос в php на оракуле:

    $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?


person Cabal    schedule 22.03.2012    source источник


Ответы (1)


В 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 */
person Vincent Malgrat    schedule 22.03.2012