PHP Oracle SQL Выберите дату to_char

Я получаю; "Warning: oci_execute(): ORA-00904: "JAN": invalid identifier«, когда я пытаюсь выполнить эти команды:

function stime($conn3, $time){

$result = oci_parse($conn3, "SELECT TO_CHAR($time, 'mm/dd/yyyy') FROM MON_EVENTS")or die(oci_error());
oci_execute($result);
}

STIME также поле даты в базе данных.

Я передаю STIME поле для $time as stime($row_oci['STIME']).

0

Решение

Вас укусил PHP интерполяция строк:

$result = oci_parse($conn3, "SELECT TO_CHAR($time, 'mm/dd/yyyy') FROM MON_EVENTS")or die(oci_error());
//                                          ^^^^^

$time заменяется его содержанием преобразован в строку — и это до передавая значение в oci_parse функция. Поскольку строковое представление даты может содержать пробелы, буквы, /… это запутает синтаксический анализатор Oracle SQL этот отчет ORA-00904: Invalid identifier,

Что касается меня, я бы предложил использовать вместо этого параметр связывания. Это гораздо менее подвержен ошибкам — и гораздо безопаснее:

$result = oci_parse($conn3, "SELECT TO_CHAR(:time, 'mm/dd/yyyy') FROM MON_EVENTS");
oci_bind_by_name($result, ':time', $time);
2

Другие решения

$ id = $ row_oci [‘ID’];
$ result = oci_parse ($ conn2, «SELECT TO_CHAR (STIME, ‘MON / DD / YY hh24: mm: ss’) FROM MON_EVENTS WHERE ID = $ id»);
oci_execute ($ результат);
while ($ row_result = oci_fetch_array ($ result)) {
эхо «». $ row_result [‘0’]. «»;}

0

По вопросам рекламы [email protected]