Я получаю; "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']).
Вас укусил 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);
$ 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’]. «»;}