PHP Oracle SQL 选择日期to_char


PHP Oracle SQL Select date 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']).

你被 PHP 字符串插值咬了一口:

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

$time被替换为其转换为字符串的内容 - 并且在将值传递给oci_parse函数之前。由于日期的字符串表示形式可能包含空格、字母、/、...它会混淆报告ORA-00904: Invalid identifier的Oracle SQL解析器。

就我自己而言,我建议改用绑定参数。这更不容易出错 - 而且更安全:

$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($conn 2, "SELECT TO_CHAR(STIME,'MON/DD/YY hh24:mm:ss') from MON_EVENTS WHERE ID = $id");
oci_execute($result);
while($row_result = oci_fetch_array($result)){
回显 "。$row_result['0'] .";}