OCI8 OCI_FECTH_ARRAY返回没有值没有错误

时间:2016-10-26 17:21:31

标签: php oracle oci8

您好我正在运行一个简单的SQL语句来提取数据并使用OCI_FETCH_ARRAY()显示而没有运气。 PHP不会在error_log中记录任何错误,或者不显示错误消息,但只显示空白页。

表定义如下:

下面是SQL,我可以在SQL开发人员上运行以获取相关数据:

$sql="SQL Here";

在下面运行OCI_PARSE和OCI_EXECUTE函数时处理错误:

$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);

?>

知道为什么我在PHP输出上看不到任何内容?甚至在error_log中没有错误?

谢谢。

1 个答案:

答案 0 :(得分:1)

在您上面的评论中说

  

它不喜欢where子句。 PHP在没有where子句的情况下提取数据。任何想法为什么OCI8会导致&#34;在哪里TRADE_DATE = TO_CHAR(SYSDATE,&#39; DD-MON-YY&#39;)&#34;?

这就是因为您的TRADE_DATE列是DATE而不是VARCHAR

class MyWidget : public QWidget {
  QLabel m_label;
  ...
  Q_SIGNAL void setImage(const QImage &);
 public:
  MyWidget() {
   ...
   connect(MyWidget, &MyWidget::setImage, this, [this](const QImage & image){
    m_label.setPixmap(QPixmap::fromImage(image));
   });
   QtConcurrent::run(ioPool(), [this]{ setImage({"/path/to/image.png"});  });
  }
};

这样做desc IRINS_COMPOSITE_INSTRUMENTS Name Null Type ------------------- -------- ------------- ... TRADE_DATE DATE 会创建一个STRING,然后使用您当前的NLS_DATE_FORMAT设置将其转换回DATE

假设您只是试图忽略TO_CHAR(SYSDATE, 'DD-MON-YY')的时间组件,只需将其更改为

即可
SYSDATE

假设修复它,它与OCI或OCI_FETCH_ARRAY()

无关