這裡的紀錄僅以個人使用成功的經驗分享.

網路上還有許多的解決方案.
供個人選擇. 廢話不多說.
進入正題..

目前使用CI版本為: 3.1.1

Oracle版本為:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – 64bit Production

首先個人先設定 application\config\database.php 檔案

//設定oracle連線的基本資訊
$tnsname ="(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=伺服器IP位置)(PORT=1521))
 (CONNECT_DATA=(SERVICE_NAME="服務名稱")))";
//以下設定則跟MYSQL連線方式差不多
$db['oracle'] = array(
 'dsn' => '',
 'hostname' => $tnsname,
 'username' => '帳號',
 'password' => '密碼',
 'database' => '資料庫名稱',
 'dbdriver' => 'oci8',  //SQL的驅動方式
 'dbprefix' => '',
 'pconnect' => FALSE,
 'db_debug' => (ENVIRONMENT !== 'production'),
 'cache_on' => FALSE,
 'cachedir' => '',
 'char_set' => 'UTF8',  //設定編碼
 'dbcollat' => 'utf8_general_ci',
 'swap_pre' => '',
 'encrypt' => FALSE,
 'compress' => FALSE,
 'stricton' => FALSE,
 'failover' => array(),
 'save_queries' => TRUE
);

接者我們來到 application/models/Erp_M.php  <= 這個是我命名的,依據各位的來決定開啟哪個

在建構初始化的時候呼叫

//載入預設oracle資料庫連線
$this->db = $this->load->database(‘oracle’,TRUE);
//同時編寫函數 透過 Active Record 方式來取得DB資料
public function test()
{
$this->db->limit(10);  //取出10筆
$this->db->select(‘TTRSNO’,FALSE);  //第二參數取消欄位 雙引號(有時資料庫不支援雙引號帶入查詢)
$this->db->where(‘NtiNo’,"‘P2016122200848A'",FALSE);
$query = $this->db->get(‘TBTR00RCAB1’);
return $query;
}

以下為可查詢之語法
“SELECT TTRSNO FROM “TBTR00RCAB1″ WHERE NtiNo = ‘P2016122200848A'"

以下為呈現結果

 
如第二參數未設定不使用雙引號
SELECT “TTRSNO" FROM “TBTR00RCAB1″ WHERE “NtiNo" = “‘P2016122200848A"‘
會顯示以下錯誤:
Message: oci_execute(): ORA-00904: “NtiNo": invalid identifier

Leave a Comment