当我们使用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上,这个用的人很少,至少理论上是可行的。