Я осознаю; "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
поле 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']. "";}
Jan
который должен бытьMON
в строке dateformat