You are here

Drupal连接Oracle

g089h515r806 的头像
Submitted by g089h515r806 on 星期二, 2022-03-29 03:55

当我们使用Drupal构建一个大型项目的时候,我们常常会和各种业务系统打交道,而有的业务系统数据库用的是oracle,我们需要建立与oracle的连接,从里面查询我们需要的数据。

我们假定你已经配置好了,oracle的相关库。

windows下面参考:

Drupal 与Oracle集成时,oracle相关配置文档, http://www.thinkindrupal.com/node/6009 

linux下面也需要安装oracle的客户端,然后安装PHP的oracle扩展,这个过程有点费事,网上有很多教程。


我们假定你已经完成了这些配置。我们封装的连接oracle的函数我们封装的连接oracle的函数,


/**
 * 从 Oracle 获取数据.
 *
 * @param string $sql
 *   SQL 链接字符串.
 * @param array $column_names
 *   返回的数据列名. 依据列名返回数据.
 * @return array
 *   数据.
 */
function myoracle_retrieve_data($sql, array $column_names = array()) {

  $data = array();

  $conn = oci_connect('username', 'password', 'dbname');
  if (!$conn) {
    $e = oci_error();
	\Drupal::logger('myoracle')->error("数据库连接时出错: " .var_export($e,true));
    return $data;
  }
  \Drupal::logger('myoracle')->notice("查询SQL: " .var_export($sql,true));

  // 编译sql语句.
  $ora = oci_parse($conn, $sql);
  oci_execute($ora, OCI_DEFAULT);

  while ($row = oci_fetch_array($ora)) {

    $tmp = array();
    foreach ($column_names as $name) {
      $tmp[$name] = $row[$name];
    }
    $data[] = $tmp;
  }
  return $data;
}


    在这个函数里面,设置用oracle的用户名,密码,数据库名,就可以连接oracle,给出一个oracle的sql语句,就能够查找到一个结果数组,剩下的就交给你自己处理了。


我们是直接连的,Drupal官方有oracle的数据库驱动,https://www.drupal.org/project/oracle  ,它允许你将整个Drupal跑在oracle上,这个用的人很少,至少理论上是可行的。


Drupal版本: