來源:xlelou 發(fā)布時間:2018-11-23 15:26:24 閱讀量:1301
根據(jù)目前thinkphp開發(fā)多數(shù)使用的是mysqsl數(shù)據(jù)庫,很少有使用oracle數(shù)據(jù)庫的,目前有需求需要使用oracle數(shù)據(jù)庫。
通過查閱別人的博客,踩了很多坑終于找到一個可以鏈接oralce數(shù)據(jù)庫的方法。
需要使用到think-oracle。
首先需要下載oracle客戶端,然后配置oci,修改php.ini文件。
1
1,Oracle官方網(wǎng)站下載安裝Oracle客戶端。
下載地址:
http://www.oracle.com/technetwork/cn/database/features/instant-client/index-097480.html
1
選擇一個合適的版本,下載,**然后將解壓后的目錄添加到系統(tǒng)變量(重要)**
2,下載PHP 擴展Oracle客戶端 DLL鏈接文件。
http://pecl.php.net/package/oci8 選擇DLL下載;
1
將下載的文件接下dll 文件到 PHP的DLL擴展目錄
3,php.ini 配置文件中開啟 Oracle連接擴展。
extension=php_pdo_oci.dll
extension=php_oci8.dll
1
2
打開phpinfo查看是否有oci8的相關信息,如果有則說明 開啟拓展成功了,沒有的話,需要自己費點時間看一下原因
二、下載ThinkPHP Oracle數(shù)據(jù)庫擴展驅(qū)動類;
1,Oracle數(shù)據(jù)庫擴展驅(qū)動類下載地址。
https://github.com/top-think/think-oracle
1
這里特別說明一下,5.0版本的請下載v1.*版本的think-oracle,5.1版本的請下載v2.*版本的think-oracle,不然會出現(xiàn)兼容性問題
將下載好的文件解壓,會得到src目錄下的兩個文件,Builder.php和Connection.php,(這里我以5.0版本為例,我下載的是v1.3版本的)
(1)將Builder.php和Connection.php分別放到:\thinkphp\library\think\db對應的builder和connector目錄并都改名為Oracle.php;
(2)修改builder目錄下的Oracle.php文件,如下:
namespace think\oracle;
use think\db\Builder as BaseBuilder;
use think\db\Query;
/**
* Oracle數(shù)據(jù)庫驅(qū)動
*/
class Builder extends BaseBuilder
1
2
3
4
5
6
7
8
9
改為
namespace think\db\builder;
use think\db\Builder;
use think\Exception;
/**
* Oracle數(shù)據(jù)庫驅(qū)動
*/
class Oracle extends Builder
1
2
3
4
5
6
7
8
9
(3)修改connector目錄下的Oracle.php文件,如下:
namespace think\oracle;
use PDO;
use think\db\Connection as BaseConnection;
/**
* Oracle數(shù)據(jù)庫驅(qū)動
*/
class Connection extends BaseConnection
1
2
3
4
5
6
7
8
9
改為
namespace think\db\connector;
use PDO;
use think\db\Connection;
use think\Log;
/**
* Oracle數(shù)據(jù)庫驅(qū)動
*/
class Oracle extends Connection
1
2
3
4
5
6
7
8
9
(4)配置Oracle連接參數(shù),如下:
return [
// 數(shù)據(jù)庫類型
'type' => 'oracle',
// 服務器地址
'hostname' => '127.0.0.1',
// 數(shù)據(jù)庫名
'database' => 'orcl',
// 用戶名
'username' => 'test',
// 密碼
'password' => '你的Oracle數(shù)據(jù)庫密碼',
// 端口
'hostport' => '1521',
// 連接dsn
'dsn' => '',
// 數(shù)據(jù)庫連接參數(shù)
'params' => [],
// 數(shù)據(jù)庫編碼默認采用utf8
'charset' => 'utf8',
// 數(shù)據(jù)庫表前綴
'prefix' => '',
// 數(shù)據(jù)庫調(diào)試模式
'debug' => true,
// 數(shù)據(jù)庫部署方式:0 集中式(單一服務器),1 分布式(主從服務器)
'deploy' => 0,
// 數(shù)據(jù)庫讀寫是否分離 主從式有效
'rw_separate' => false,
// 讀寫分離后 主服務器數(shù)量
'master_num' => 1,
// 指定從服務器序號
'slave_no' => '',
// 是否嚴格檢查字段是否存在
'fields_strict' => true,
// 數(shù)據(jù)集返回類型
'resultset_type' => 'array',
// 自動寫入時間戳字段
'auto_timestamp' => false,
// 時間字段取出后的默認時間格式
'datetime_format' => 'Y-m-d H:i:s',
// 是否需要進行SQL性能分析
'sql_explain' => false,
];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
后面就可以自己連接數(shù)據(jù)庫輸出數(shù)據(jù)了;
---------------------
作者:xlelou
來源:CSDN
原文:https://blog.csdn.net/xlelou/article/details/84074952
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!