zoukankan      html  css  js  c++  java
  • PHP: 如何连接oracle数据库进行数据读取

    今天在给客户修改一套报表程序时遇到的问题,PHP和Oracle正好都不是我最熟悉的,但看了一些资料,勉强能改改。他们这套报表程序并不是很复杂,之前也是自己捣鼓捣鼓用PHP写的。其实用不用PHP并不是关键,我的主要使命是要对报表系统的架构上做一些优化。经过我们的努力,原先很多分散的页面都进行了整合,数据库结构也进行了一些优化。

    例如不管报表的数据源是oracle,还是sql server,我们都可以使用同一个页面来完成查询和展现。以后增加报表的时候,只需要在数据库中进行配置即可,无需修改或者增加页面。

    另外,不管报表是要在浏览器中查看还是要导出Excel格式,我们都可以用同一个页面来实现,无需用多个页面。

    关于在PHP中连接Oracle的范例,摘录一个如下

    oci_fetch_all

    (PHP 5, PECL oci8:1.1-1.2.4)

    oci_fetch_all — 获取结果数据的所有行到一个数组

    说明

    int oci_fetch_all ( resource $statement, array &$output [, int $skip [, int $maxrows [, int $flags]]] )

    oci_fetch_all() 从一个结果中获取所有的行到一个用户定义的数组。oci_fetch_all() 返回获取的行数,出错则返回 FALSEskip 是从结果中获取数据时,最开始忽略的行数(默认值是 0,即从第一行开始)。maxrows 是要读取的行数,从第 skip 行开始(默认值是 -1,即所有行)。

    注意: 本函数对 PHP NULL 值设定 NULL 字段。

    flags 参数可以是下列值的任意组合:

    OCI_FETCHSTATEMENT_BY_ROW

    OCI_FETCHSTATEMENT_BY_COLUMN(默认值)

    OCI_NUM

    OCI_ASSOC

    例 1583. oci_fetch_all() 例子

    <?php
    /* oci_fetch_all example mbritton at verinet dot com (990624) */
    $conn = oci_connect("scott", "tiger");
    $stmt = oci_parse($conn, "select * from emp");
    oci_execute($stmt);
    $nrows = oci_fetch_all($stmt, $results);
    if ($nrows > 0) {
       echo "<table border=\"1\">\n";
       echo "<tr>\n";
       foreach ($results as $key => $val) {
          echo "<th>$key</th>\n";
       }
       echo "</tr>\n";
       for ($i = 0; $i < $nrows; $i++) {
          echo "<tr>\n";
          foreach ($results as $data) {
             echo "<td>$data[$i]</td>\n";
          }
          echo "</tr>\n";
       }
       echo "</table>\n";
    } else {
       echo "No data found<br />\n";
    }
    echo "$nrows Records Selected<br />\n";
    oci_free_statement($stmt);
    oci_close($conn);
    ?>

    有关 OCI8 驱动程序执行的数据类型映射的细节,见驱动程序支持的数据类型

    oci_fetch_all() 如果出错则返回 FALSE

    注意: 在 PHP 5.0.0 之前的版本必须使用 ocifetchstatement() 替代本函数。该函数名仍然可用,为向下兼容作为 oci_fetch_all() 的别名。不过其已被废弃,不推荐使用。

  • 相关阅读:
    chrome浏览器中安装以及使用Elasticsearch head 插件
    windows10 升级并安装配置 jmeter5.3
    linux下部署Elasticsearch6.8.1版本的集群
    【Rollo的Python之路】Python 爬虫系统学习 (八) logging模块的使用
    【Rollo的Python之路】Python 爬虫系统学习 (七) Scrapy初识
    【Rollo的Python之路】Python 爬虫系统学习 (六) Selenium 模拟登录
    【Rollo的Python之路】Python 爬虫系统学习 (五) Selenium
    【Rollo的Python之路】Python 爬虫系统学习 (四) XPath学习
    【Rollo的Python之路】Python 爬虫系统学习 (三)
    【Rollo的Python之路】Python sys argv[] 函数用法笔记
  • 原文地址:https://www.cnblogs.com/chenxizhang/p/1600077.html
Copyright © 2011-2022 走看看