Php OCI8 OCI_FECTH_数组不返回值无错误

Php OCI8 OCI_FECTH_数组不返回值无错误,php,oracle,oci8,Php,Oracle,Oci8,您好,我正在运行一个简单的SQL语句,使用OCI_FETCH_ARRAY()来提取数据并显示,但运气不好。PHP不会在Error日志中记录任何错误,也不会显示错误信息,但只显示空白页。 表定义如下: 下面是SQL,我可以在SQL developer上运行以提取相关数据: $sql="SQL Here"; 运行OCI_PARSE和OCI_执行以下函数时的错误处理: $stid = oci_parse($conn,$sql); $error_msg_conn= oci_parse($conn,$

您好,我正在运行一个简单的SQL语句,使用OCI_FETCH_ARRAY()来提取数据并显示,但运气不好。PHP不会在Error日志中记录任何错误,也不会显示错误信息,但只显示空白页。

表定义如下:

下面是SQL,我可以在SQL developer上运行以提取相关数据:

$sql="SQL Here";
运行OCI_PARSE和OCI_执行以下函数时的错误处理:

$stid = oci_parse($conn,$sql);

$error_msg_conn= oci_parse($conn,$sql);

if (!$error_msg_conn) {
  $e = oci_error($conn); 
  echo htmlentities($e['message']);
}

$error_msg_stmt = oci_execute($stid);

if (!$error_msg_stmt) {
  $e = oci_error($stid); 
  echo htmlentities($e['message']);
}
显示以下结果集中记录的代码:

while (($row = oci_fetch_array($stid,OCI_RETURN_NULLS+OCI_BOTH))==TRUE) {

                echo "<td>".$row[0]."</td>";
                echo "<td>".$row[1]."</td>";
                echo "<td>".$row[2]."</td>";
                echo "<td>".$row[3]."</td>";
                echo "<td>".$row[4]."</td>";
                echo "<td>".$row[5]."</td>";
                echo "<td>".$row[6]."</td>";
                echo "<td>".$row[7]."</td>";
                echo "<td>".$row[8]."</td>";
                echo "<td>".$row[9]."</td>";
                echo "<td>".$row[10]."</td>";
                echo "<td>".$row[11]."</td>";
                echo "<td>".$row[12]."</td>\n";
                echo "</tr>\n";
}
echo "</table>\n";

oci_free_statement($stid);
oci_close($conn);

?>
while($row=oci\u fetch\u数组($stid,oci\u RETURN\u NULLS+oci\u BOTH))==TRUE){
回显“$行[0]”;
回显“$行[1]”;
回显“$行[2]”;
回显“$行[3]”;
回显“$行[4]”;
回显“$行[5]”;
回显“$行[6]”;
回显“$行[7]”;
回显“$行[8]”;
回显“$行[9]”;
回显“$行[10]”;
回显“$行[11]”;
回显“.”行[12]。“\n”;
回音“\n”;
}
回音“\n”;
保监处自由声明(stid);
保监处关闭($康涅狄格州);
?>
你知道为什么我在PHP输出上看不到任何东西吗?即使错误日志中没有错误


谢谢。

您在上面的评论中说

它不喜欢where子句。PHP在没有where子句的情况下提取数据。知道为什么OCI8会引起“WHERE TRADE_DATE=TO_CHAR(SYSDATE,'DD-MON-YY')”的问题吗

这是因为你的TRADE_DATE列是日期而不是VARCHAR

desc IRINS_COMPOSITE_INSTRUMENTS
Name                Null     Type          
------------------- -------- ------------- 
...
TRADE_DATE                   DATE
因此,对字符(SYSDATE,'DD-MON-YY')执行
操作将创建一个字符串,然后使用当前的NLS\u日期格式设置将该字符串转换回日期

假设您只是试图忽略SYSDATE的时间部分,请尝试将其更改为

WHERE TRADE_DATE=TRUNC(SYSDATE)

假设修复了它,它与OCI或OCI FETCH\u ARRAY()无关。

您是否看到任何输出?我只看到打印在OCI\u FETCH\u ARRAY()循环之外的html标题。没有别的了。没有错误,没有。您在源代码中看到start
标记了吗?是的,所有HTML都可以打印。奇怪的是,我可以在SQLDeveloper上运行相同的sql并生成数据。另外,所有其他php页面都工作正常。请尝试
而($row=oci\u fetch\u array($stid,oci\u两者)){
将尝试@ShoeLace您的解决方案,但当我在其中执行TRADE\u DATE=TO\u CHAR(CURRENT\u DATE)时,它工作正常。它可能工作..但不可预测..将日期与日期(而不是日期与字符)进行比较,您应该很好。