国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 php教程 php手冊 ThinkPHP 連接Oracle數(shù)據(jù)庫的詳細(xì)教程[全]

ThinkPHP 連接Oracle數(shù)據(jù)庫的詳細(xì)教程[全]

Jun 13, 2016 am 11:59 AM
oracle thinkphp windows7 搭建 操作 教程 數(shù)據(jù)庫 旗艦 環(huán)境 系統(tǒng) 詳細(xì) 連接

一、?操作環(huán)境搭建

系統(tǒng):Windows7 旗艦版 64位
PHP環(huán)境:wampserver2.2e-php5.4.3-httpd2.2.22-mysql5.5.24? 32位版
下載地址:http://www.wampserver.com/en/


ThinkPHP:3.0正式版
下載地址:http://thinkphp.cn/down.html


Oracle:Orcale_11gR2? 32位版
下載地址:http://www.oracle.com/technetwork/cn/indexes/downloads/index.html


數(shù)據(jù)庫操作工具:PLSQL Developer 32位
下載地址:http://www.allroundautomations.com/plsqldev.html


開發(fā)工具:NetBeans IDE 7.1.2
下載地址:http://netbeans.org/downloads/index.html 下載單PHP的版本即可

說明:這里我反復(fù)強(qiáng)調(diào)軟件的“位”,是因?yàn)檫@個很重要,一般情況下,我們系統(tǒng)是64位的,那么最好軟件也用64位的,但是這里除過系統(tǒng)外,全部選擇32位是有原因的,目的是為了配合PLSQL Developer和WAMP的PHP擴(kuò)展。因?yàn)镻LSQL Developer沒有64位版。有的朋友說用64位Oracle數(shù)據(jù)庫,裝32位客戶端就行,我不想這樣做,如果不喜歡我的操作方式,可以繞道。當(dāng)然了,如果你不使用PLSQL Developer,而選擇使用Oracle 自帶的SQL Developer,那么你全安裝64位或32都是你自己的事。PHP連接Oracle數(shù)據(jù)庫需要開啟相應(yīng)的擴(kuò)展,這個擴(kuò)展也需要數(shù)據(jù)庫客戶端的支持,因?yàn)閜hp擴(kuò)展也需要對應(yīng)數(shù)據(jù)庫客戶端的位數(shù)。啰嗦完畢。

二、?環(huán)境配置

1,?操作系統(tǒng)的安裝我就不說了,Oracle安裝自己解決,NetBeans IDE 7.1.2也自己解決。

2,?Wamp的安裝我也不說了,不會的直接從DOS開始重新學(xué)習(xí)吧。

3,?WAMP會把PHP的網(wǎng)頁文件夾定義在安裝wamp的文件夾下的www里面,我是安裝在D盤,所以就是D:\WAMP\www。我們暫時不做別的自定義修改。啟動wamp,系統(tǒng)托盤圖標(biāo)為綠色表示啟動OK。

4,?打開localhost,看到如下界面,表示環(huán)境配置基本OK。為什么是基本了,因?yàn)檫€沒有對Oracle的配置進(jìn)行設(shè)置。

5,?打開如圖的PHP擴(kuò)展菜單,在綠色圖標(biāo)上,左鍵->PHP->PHP擴(kuò)展,點(diǎn)擊php-oci8的擴(kuò)展,這時候這個WAMP會重啟,等待重啟后變綠,就表示OK。

6,?再次打開剛才的localhost頁面,如果找到如圖4的顯示,就表示目前PHP已經(jīng)支持Oracle了。

注意,我現(xiàn)在用的 wamp和oracle客戶端都是32位,如果其中一個是64位,那么這個oci的擴(kuò)展時打不開的,同時自動環(huán)境監(jiān)測頁面也沒有oci8的顯示。在不使用PL/SQL的前提下,必須是32位Oracle和32位WAMP搭配,64位Oracle和64位WAMP搭配,else請繞道。

三、?ThinkPHP配置

1,?把下載好的3.0正式版解壓,項(xiàng)目中只需要ThinkPHP文件夾,這是核心。
2,?使用IDE新建一個項(xiàng)目,項(xiàng)目的文件夾為剛才的Wamp下的www文件夾,如果個人需要自定義別的文件夾,需要修改apache的配置文件,這里我不修改。
3,?將Thinkphp文件夾拷貝到項(xiàng)目文件夾中,新建一個php文件,命名index.php。
4,?IDE中已經(jīng)有這些文件的顯示了,打開index.php,編寫如下內(nèi)容:

復(fù)制代碼 代碼如下:


define('APP_DEBUG', true);
require './ThinkPHP/ThinkPHP.php';


5,?在瀏覽器中打開localhost/項(xiàng)目名/index.php,Thinkphp會幫你生成好相關(guān)文件和文件夾。
6,?對配置文件進(jìn)行操作,找到:Conf文件夾下config.php文件,修改如下:

復(fù)制代碼 代碼如下:


return array(
'DB_TYPE' => 'Oracle', // 數(shù)據(jù)庫類型
'DB_HOST' => '192.168.0.8', // 服務(wù)器地址
'DB_NAME' => 'orcl', // 數(shù)據(jù)庫名
'DB_USER' => 'test', // 用戶名
'DB_PWD' => 'test', // 密碼
'DB_PORT' => '1521', // 端口
);


Oracle數(shù)據(jù)庫和mysql 的結(jié)構(gòu)不同,一般默認(rèn)安裝的數(shù)據(jù)庫名是orcl,如果你使用了多個數(shù)據(jù)庫監(jiān)聽,那么就要根據(jù)具體的監(jiān)聽字段來設(shè)置。比如:我本機(jī)數(shù)據(jù)庫堅(jiān)挺是Orcl,同時監(jiān)聽另外一個外網(wǎng)的數(shù)據(jù)庫,監(jiān)聽字符串為Orcl2,那么如果你需要連接這個外網(wǎng)數(shù)據(jù)庫,那么需要寫的數(shù)據(jù)庫名就是orcl2。

7,?經(jīng)過以上的配置,是已經(jīng)可以連接oracle數(shù)據(jù)庫了,但是在thinkphp的實(shí)際操作中有什么注意的地方,且接著往下看。

最近收集了一些關(guān)于THinkPHP連接Oracle數(shù)據(jù)庫的問題,有很多朋友按照連接mysql的方法來操作,導(dǎo)致有一些方法在Oreale中無法正常使用。比如說:findAll,Select方法無法使用,獲取不到需要的數(shù)據(jù)。Create和add方法無法創(chuàng)建和寫入數(shù)據(jù)到數(shù)據(jù)庫中。

其實(shí)根據(jù)以前問題我做了幾天調(diào)試,找到了問題所在,并成功在我自己一個小項(xiàng)目練習(xí)中使用正常,那么現(xiàn)在就將我的經(jīng)驗(yàn)分享給大家。

1,數(shù)據(jù)庫的連接及配置文件的內(nèi)容我就不說了, 上面已經(jīng)做了解釋。我這里只根據(jù)一個數(shù)據(jù)表的例子來說明我的操作。

2,表結(jié)構(gòu)如下:



3,這個表中有3個字段,ID主鍵,用戶名username和密碼password,因?yàn)閛racle數(shù)據(jù)庫把表名和字段都是轉(zhuǎn)成大寫的,同時不支持ID主鍵自增,我只有使用另外的方法來實(shí)現(xiàn)這個功能,比如:ID自動序列+觸發(fā)器實(shí)現(xiàn)ID自增。

4,?? ?ThinkPHP中,Action是控制器,Model是模型,視圖是以模板方式體現(xiàn)的。

首先,說控制器,我只做增加和獲取列表的方法介紹。

其次,說模型,這里才是成功的主要原因。為什么?ThinkPHP是有字段映射的,這個在對MYSQL的支持非常完美,基本不用寫MODEL,但是對ORALCE就不行了,當(dāng)使用M->add()來添加數(shù)據(jù)時,字段會被$this->_facade()方法過濾掉。這樣生成的SQL語句就是沒法執(zhí)行的,肯定是錯誤的,導(dǎo)致數(shù)據(jù)添加不到數(shù)據(jù)庫中,那么使用select()方法也是一樣被過濾。

再次,當(dāng)我單步調(diào)試時,斷點(diǎn)被過濾的時候,過濾方法使用到了new出來的MODEL,這個MODEL會有一個字段映射的數(shù)組在里面,這個過濾方法就是和這個字段數(shù)組進(jìn)行對比,如果不一致就過濾掉,結(jié)果我調(diào)試發(fā)現(xiàn),new出來的MODEL根本沒有把字段映射加進(jìn)去,數(shù)組直接為空,當(dāng)然就沒法和添加的數(shù)據(jù)字段一一對應(yīng)了。這就是錯誤的關(guān)鍵。

下面就來說解決方法,其實(shí)很簡單,按照基本的MVC結(jié)構(gòu),不管是PHP還是JAVA還是.NET都有這樣的結(jié)構(gòu),那么按照嚴(yán)格的標(biāo)準(zhǔn),MODEL層的代碼是必須寫的,就是要和數(shù)據(jù)庫的字段做映射。但是很多用mysql的,就直接沒有去寫MODEL里面的代碼。這種習(xí)慣被用到了oracle中,就出了問題。

5,?? ?下面針對我上面的數(shù)據(jù)表寫出我的代碼:

我的Action是這樣的:UserAction.class.php??刂破魑抑粚μ砑雍筒檎易隼?,因此代碼如下:

復(fù)制代碼 代碼如下:


public function index() {
header("Content-Type:text/html; charset=utf-8");
$M_User = new UserModel();
$User_List = $M_User->select();
$this->assign('Title', '用戶管理');
$this->assign('UserList', $User_List);
$this->display();
}
//添加用戶提交處理
public function Create_Post() {
$M_User = new UserModel();
$data['username'] = $this->_post('username');
$data['password'] = md5($this->_post('pwd'));
if ($M_User->create()) {
$Query_Result = $M_User->add($data);
if (false !== $Query_Result) {
$this->success('用戶添加成功');
} else {
$this->error('用戶添加錯誤');
}
} else {
header("Content-Type:text/html; charset=utf-8");
exit($M_User->getError() . ' [ 返 回 ]');
}
}


?Action解釋:

$M_User=new UserModel();

這個方法最好這么寫,因?yàn)樽?NET的原因,一直都這么寫的。針對具體的模型進(jìn)行實(shí)例化,嚴(yán)格規(guī)定我就要對User表進(jìn)行操作了。

獲取POST數(shù)據(jù)的代碼就不多解釋了。

$M_User->create();

這是ThinkPHP的一個方法,很好,可以幫你過濾掉非法的東西,建議使用。

$Query_Result = $M_User->add($data);

這一段就是數(shù)據(jù)的添加,我習(xí)慣指定要添加的數(shù)據(jù),也是因?yàn)檫@一段需要根據(jù)$M_User實(shí)例化,并過濾字段。當(dāng)然了,我們只要做好MODEL的代碼,就不會有問題。下面的代碼就不解釋。官方文檔都有。

我的Model是這樣的:UserModel.class.php

protected $fields = array( 'id', 'username', 'password' );

Model解釋:這才是重點(diǎn),這有這樣,new出來的$M_User的映射字段數(shù)組才不會為空,這樣才能和POST的數(shù)據(jù)進(jìn)行對應(yīng),才會讓過濾方法正常識別,不被過濾。

6,經(jīng)過了以上的操作,針對Oracle的數(shù)據(jù)庫操作就完成了,我現(xiàn)在也可以任意使用ThinkPHP提供的方法來操作數(shù)據(jù)了,包括分頁(limit),find(),findAll等等。

出處 http://www.cnblogs.com/aceliu/

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

怎么學(xué)java不走彎路 高效學(xué)習(xí)Java的方法和技巧分享 怎么學(xué)java不走彎路 高效學(xué)習(xí)Java的方法和技巧分享 May 20, 2025 pm 08:24 PM

學(xué)習(xí)Java不走彎路的關(guān)鍵是:1.理解核心概念和語法;2.多實(shí)踐;3.理解內(nèi)存管理和垃圾回收;4.加入在線社區(qū);5.閱讀別人的代碼;6.了解常見庫和框架;7.學(xué)習(xí)處理常見錯誤;8.制定學(xué)習(xí)計(jì)劃并循序漸進(jìn)。這些方法能幫助你高效掌握J(rèn)ava編程。

學(xué)java要學(xué)哪些東西 Java學(xué)習(xí)路線和必備知識點(diǎn)匯總 學(xué)java要學(xué)哪些東西 Java學(xué)習(xí)路線和必備知識點(diǎn)匯總 May 20, 2025 pm 08:15 PM

學(xué)Java需要學(xué)習(xí)基礎(chǔ)語法、面向?qū)ο缶幊?、集合框架、異常處理、多線程、I/O流、JDBC、網(wǎng)絡(luò)編程以及高級特性如反射和注解。1.基礎(chǔ)語法包括變量、數(shù)據(jù)類型、運(yùn)算符和控制流語句。2.面向?qū)ο缶幊毯w類、對象、繼承、多態(tài)、封裝和抽象。3.集合框架涉及ArrayList、LinkedList、HashSet和HashMap等。4.異常處理通過try-catch塊確保程序健壯性。5.多線程編程需要理解線程生命周期和同步。6.I/O流用于數(shù)據(jù)讀寫和文件操作。7.JDBC用于與數(shù)據(jù)庫交互。8.網(wǎng)絡(luò)編程通過S

Oracle數(shù)據(jù)庫與BI工具(如Tableau)的連接和數(shù)據(jù)可視化 Oracle數(shù)據(jù)庫與BI工具(如Tableau)的連接和數(shù)據(jù)可視化 May 19, 2025 pm 06:27 PM

要將Oracle數(shù)據(jù)庫與Tableau連接進(jìn)行數(shù)據(jù)可視化,需按以下步驟操作:1.在Tableau中配置Oracle數(shù)據(jù)庫連接,使用ODBC或JDBC驅(qū)動程序;2.探索數(shù)據(jù)并創(chuàng)建可視化,如柱狀圖等;3.優(yōu)化SQL查詢和索引提高性能;4.利用Oracle的復(fù)雜數(shù)據(jù)類型和函數(shù),通過自定義SQL查詢實(shí)現(xiàn);5.創(chuàng)建物化視圖提升查詢速度;6.利用Tableau的交互功能如儀表板進(jìn)行深入分析。

sql數(shù)據(jù)庫語句大全 sql數(shù)據(jù)庫常用語句匯總 sql數(shù)據(jù)庫語句大全 sql數(shù)據(jù)庫常用語句匯總 May 28, 2025 pm 08:12 PM

SQL常用語句包括:1.CREATETABLE創(chuàng)建表,如CREATETABLEemployees(idINTPRIMARYKEY,nameVARCHAR(100),salaryDECIMAL(10,2));2.CREATEINDEX創(chuàng)建索引,如CREATEINDEXidx_nameONemployees(name);3.INSERTINTO插入數(shù)據(jù),如INSERTINTOemployees(id,name,salary)VALUES(1,'JohnDoe',75000.00);4.SELECT查

我什么時候應(yīng)該使用redis代替?zhèn)鹘y(tǒng)數(shù)據(jù)庫? 我什么時候應(yīng)該使用redis代替?zhèn)鹘y(tǒng)數(shù)據(jù)庫? May 13, 2025 pm 04:01 PM

用戶edisinsteadofatraditionaldatabasewhenyourapplicationrequirespeedandreal-timedataprocorsing,sueAsAsforCaching,sessionmanagement,orrereal-timeanalytics.redisexcelsin:1)caching,緩存,減少載荷載量

Oracle數(shù)據(jù)庫的并行查詢配置和性能提升 Oracle數(shù)據(jù)庫的并行查詢配置和性能提升 May 19, 2025 pm 06:24 PM

在Oracle數(shù)據(jù)庫中,配置并行查詢以提升性能的步驟包括:1.在數(shù)據(jù)庫級別設(shè)置,通過修改初始化參數(shù)如PARALLEL_DEGREE_POLICY和PARALLEL_MAX_SERVERS來實(shí)現(xiàn);2.在會話級別設(shè)置,通過ALTERSESSION命令調(diào)整當(dāng)前會話的并行度;3.考慮并行度、資源管理和數(shù)據(jù)分布等關(guān)鍵點(diǎn);4.通過優(yōu)化查詢計(jì)劃、調(diào)整并行度和監(jiān)控調(diào)優(yōu)來提升性能。這些步驟有助于充分利用并行查詢的優(yōu)勢,顯著提升數(shù)據(jù)庫的查詢性能。

查看MongoDB中所有數(shù)據(jù)庫的方法 查看MongoDB中所有數(shù)據(jù)庫的方法 Jun 04, 2025 pm 10:42 PM

在MongoDB中查看所有數(shù)據(jù)庫的方法是輸入命令“showdbs”。1.該命令只顯示非空數(shù)據(jù)庫。2.可以通過“use”命令切換數(shù)據(jù)庫并插入數(shù)據(jù)使其顯示。3.注意內(nèi)部數(shù)據(jù)庫如“l(fā)ocal”和“config”。4.使用驅(qū)動程序時需用“l(fā)istDatabases()”方法獲取詳細(xì)信息。5.“db.stats()”命令可查看數(shù)據(jù)庫詳細(xì)統(tǒng)計(jì)信息。

如何在Windows/Linux上安裝MySQL 8.0? 如何在Windows/Linux上安裝MySQL 8.0? Jun 11, 2025 pm 03:25 PM

安裝MySQL8.0的關(guān)鍵在于按步驟操作并注意常見問題。Windows上推薦使用MSI安裝包,步驟包括下載安裝包、運(yùn)行安裝程序、選擇安裝類型、設(shè)置root密碼、啟用服務(wù)啟動,并注意端口沖突或手動配置ZIP版;Linux(如Ubuntu)則通過apt安裝,步驟為更新源、安裝服務(wù)器、運(yùn)行安全腳本、檢查服務(wù)狀態(tài)及修改root認(rèn)證方式;無論哪個平臺,都應(yīng)修改默認(rèn)密碼、創(chuàng)建普通用戶、設(shè)置防火墻、調(diào)整配置文件以優(yōu)化字符集等參數(shù),確保安全性與正常使用。

See all articles