快轉到主要內容

drupal 7中操作遠程oracle數據庫

·584 字·2 分鐘
Y Cheung
作者
Y Cheung
Blogger, Programer & Traveler.
目錄

系統環境需求
#

PHP環境最好是 PHP 7,系統最好是紅帽系。

操作步驟
#

安裝Oracle Instant Client
#

Oracle官網頁面中找到系統對應的客戶端下載安裝,比如Y CHEUNG選擇的就是 Instant Client Downloads for Linux x86-64 ,Fedora可以下載RPM包直接安裝,非RedHat系統的可能需要先編譯,用make install的方式安裝。

主要是安裝basic包,比如YCHEUNG安裝的就是 oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm 。值得注意的是,下載前必須要註冊oracle用戶(免費)。

安裝 PHP Oci8擴展
#

用PERL安裝OCI8擴展。如果是PHP7以上的版本使用 perl install oci8 就好了,如果是低於PHP 7的版本環境的話則在perl安裝的時候要指定版本。

(最好是先裝oracle客戶端再裝PHP的oci8擴展,這樣在安裝oci8擴展的時候系統會自動找到客戶端的位置,就不需要再手動指定位置了。)

安裝 drupal Oci8 模組
#

Oracle integration Module : https://www.drupal.org/project/oci8

YCHUENG和同事稍微改了一下這個模組,以解決中文編碼和寫入數據庫的問題: GITHUB

配置數據庫
#

在 drupal 的 settings.php 裡增加數據庫信息:

 1/**
 2 * Database connection settings for the oci8 module. These settings
 3 * mimic Drupal's main $databases variable.
 4 */
 5$conf['oci8'] = array(
 6  'databases' => array(
 7    'default' => array(
 8      'default' => array(
 9        'database' => 'DATABASE_NAME',
10        'username' => 'DATABASE_USER_NAME',
11        'password' => 'DATABASE_PASSWORD',
12        'hosts' => array('HOST_A', 'HOST_B'),
13        'port' => 'PORT_NUMBER',
14        'character_set' => 'CHARACTER_SET',
15      ),
16    ),
17  ),
18);

數據庫查詢
#

1oci8_db_query("select * from basictable")->fetchAll();

數據庫更新/修改
#

 1$connect = new OCI8DatabaseConnection($GLOBALS['conf']['oci8']['databases']['default']['default']);
 2
 3$resource = $connect->getResource();
 4
 5$query = oci_parse($resource, "INSERT INTO MID_BD_PSNDOC VALUES (:id,:psncode,null,'TEST FIELD')");
 6
 7oci_bind_by_name($query, ':id', 234);
 8oci_bind_by_name($query, ':psncode', 'psncode');
 9
10$result = oci_execute($query);
11
12if (!$result) {
13        $error = oci_error($query);
14        watchdog('Oci8', '寫入數據庫失敗。' . $error['message'],  WATCHDOG_ERROR);
15}

Reference
#

相關文章

Drupal7中自定义表格输入

·1240 字·3 分鐘
Drupal默认的节点表单(entity form)输入有时候并不能满足我们的需求,比如我想做一个类似excel表格输入形式的表单呢? = DEMO点这里 (PS. 用Pantheon的sandbox做了一个随意折腾的drupal站点,真的是折腾死我了= =) 首先,新建一个自定义模块,在你的*.module文件中hook_menu() 指定一个页面路径,设置页面调用表单,比如这样:

Drupal7 中Restful模组应用简单介绍

·1918 字·4 分鐘
安装并启用Restful Module # Restful 2.x 下载 drush 安装 drush dl restful, drush en restful 自定义RESTFUL API模组 # 可参考restful里的范例 sites/all/modules/restful/modules/restful_example 或者测试文件内容 sites/all/modules/restful/tests 模组文件结构 # 1custom_restfulapi/ 2├─ src/ 3│ ├─ Plugin/ 4│ │ ├─ resource/ 5│ │ │ ├─ entity/ 6│ │ │ │ ├─ Testentity__1_0.php 7├─ custom_restfulapi.info 8├─ custom_restfulapi.module API RESOURCES要放在src/Plugin下。 *.info 和 *.module 的内容跟其他自定义模组的相差无几,方法一样,此处从略。

MYSQL外鍵導致無法清空表

·132 字·1 分鐘
最近設計的數據庫表含有外鍵,結果在開發時truncate table的時候報錯了, 1SQL错误(1701):Cannot truncate a table referenced in a foreign key constraint (`rollcall2`.`oncall`, CONSTRAINT `FK__calls` FOREIGN KEY (`calls_id`) REFERENCES `rollcall2`.`calls` (`id`)) 解決辦法如下: 1SET FOREIGN_KEY_CHECKS = 0; 2TRUNCATE table; 3SET FOREIGN_KEY_CHECKS = 1; 當然也可以通過移除外鍵之類的辦法,但是感覺還是用上面幾行命令來解決比較方便。

Centos 7 使用 certbot 安裝Let’s Encrypt SSL 證書

·707 字·2 分鐘
安裝環境 # CentOS7 主機 Nginx 操作步驟 # 安裝certbot # 1#如果你已經安裝了EPEL,這個步驟可以省略 2sudo yum install epel-release 3#安裝certbot客戶端 4sudo yum install certbot 使用嚮導自動安裝證書 # 使用certbot嚮導安裝,有界面,根據指示一步步操作就行,但是YCHEUNG進行到設置webroot的時候就error了,只好放棄