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

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

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

Jun 13, 2016 am 11:59 AM
oracle thinkphp windows7 搭建 操作 教學(xué) 資料庫 旗艦 環(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)檫@個(gè)很重要,一般情況下,我們系統(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ò)展,這個(gè)擴(kuò)展也需要數(shù)據(jù)庫客戶端的支持,因?yàn)閜hp擴(kuò)展也需要對(duì)應(yīng)數(shù)據(jù)庫客戶端的位數(shù)。啰嗦完畢。

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

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

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

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

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

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

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

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

三、?ThinkPHP配置

1,?把下載好的3.0正式版解壓,項(xiàng)目中只需要ThinkPHP文件夾,這是核心。
2,?使用IDE新建一個(gè)項(xiàng)目,項(xiàng)目的文件夾為剛才的Wamp下的www文件夾,如果個(gè)人需要自定義別的文件夾,需要修改apache的配置文件,這里我不修改。
3,?將Thinkphp文件夾拷貝到項(xiàng)目文件夾中,新建一個(gè)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會(huì)幫你生成好相關(guān)文件和文件夾。
6,?對(duì)配置文件進(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,如果你使用了多個(gè)數(shù)據(jù)庫監(jiān)聽,那么就要根據(jù)具體的監(jiān)聽字段來設(shè)置。比如:我本機(jī)數(shù)據(jù)庫堅(jiān)挺是Orcl,同時(shí)監(jiān)聽另外一個(gè)外網(wǎng)的數(shù)據(jù)庫,監(jiān)聽字符串為Orcl2,那么如果你需要連接這個(gè)外網(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)試,找到了問題所在,并成功在我自己一個(gè)小項(xiàng)目練習(xí)中使用正常,那么現(xiàn)在就將我的經(jīng)驗(yàn)分享給大家。

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

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



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

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

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

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

再次,當(dāng)我單步調(diào)試時(shí),斷點(diǎn)被過濾的時(shí)候,過濾方法使用到了new出來的MODEL,這個(gè)MODEL會(huì)有一個(gè)字段映射的數(shù)組在里面,這個(gè)過濾方法就是和這個(gè)字段數(shù)組進(jìn)行對(duì)比,如果不一致就過濾掉,結(jié)果我調(diào)試發(fā)現(xiàn),new出來的MODEL根本沒有把字段映射加進(jìn)去,數(shù)組直接為空,當(dāng)然就沒法和添加的數(shù)據(jù)字段一一對(duì)應(yīng)了。這就是錯(cuò)誤的關(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,?? ?下面針對(duì)我上面的數(shù)據(jù)表寫出我的代碼:

我的Action是這樣的:UserAction.class.php??刂破魑抑粚?duì)添加和查找做例子,因此代碼如下:

復(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('用戶添加錯(cuò)誤');
}
} else {
header("Content-Type:text/html; charset=utf-8");
exit($M_User->getError() . ' [ 返 回 ]');
}
}


?Action解釋:

$M_User=new UserModel();

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

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

$M_User->create();

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

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

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

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

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

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

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

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

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

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

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版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
怎麼用jdbc連接oracle數(shù)據(jù)庫連接池 怎麼用jdbc連接oracle數(shù)據(jù)庫連接池 Jun 04, 2025 pm 10:15 PM

使用JDBC連接Oracle數(shù)據(jù)庫連接池的步驟包括:1)配置連接池,2)從連接池獲取連接,3)執(zhí)行SQL操作,4)關(guān)閉資源。使用OracleUCP可以有效管理連接,提高性能。

如何在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ù)啟動(dòng),並註意端口衝突或手動(dòng)配置ZIP版;Linux(如Ubuntu)則通過apt安裝,步驟為更新源、安裝服務(wù)器、運(yùn)行安全腳本、檢查服務(wù)狀態(tài)及修改root認(rèn)證方式;無論哪個(gè)平臺(tái),都應(yīng)修改默認(rèn)密碼、創(chuàng)建普通用戶、設(shè)置防火牆、調(diào)整配置文件以優(yōu)化字符集等參數(shù),確保安全性與正常使用。

查看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ū)動(dòng)程序時(shí)需用“l(fā)istDatabases()”方法獲取詳細(xì)信息。 5.“db.stats()”命令可查看數(shù)據(jù)庫詳細(xì)統(tǒng)計(jì)信息。

在大數(shù)據(jù)環(huán)境中使用Oracle數(shù)據(jù)庫與Hadoop的集成 在大數(shù)據(jù)環(huán)境中使用Oracle數(shù)據(jù)庫與Hadoop的集成 Jun 04, 2025 pm 10:24 PM

集成Oracle數(shù)據(jù)庫與Hadoop的主要原因是利用Oracle的強(qiáng)大數(shù)據(jù)管理和事務(wù)處理能力,以及Hadoop的大規(guī)模數(shù)據(jù)存儲(chǔ)和分析能力。集成方法包括:1.使用OracleBigDataConnector將數(shù)據(jù)從Oracle導(dǎo)出到Hadoop;2.使用ApacheSqoop進(jìn)行數(shù)據(jù)傳輸;3.通過Oracle的外部表功能直接讀取Hadoop數(shù)據(jù);4.使用OracleGoldenGate實(shí)現(xiàn)數(shù)據(jù)同步。

oracle數(shù)據(jù)庫怎麼查詢自己管理員密碼 oracle數(shù)據(jù)庫怎麼查詢自己管理員密碼 Jun 04, 2025 pm 10:06 PM

直接查詢管理員密碼在安全性上是不推薦的做法。 Oracle數(shù)據(jù)庫的安全設(shè)計(jì)原則是避免明文存儲(chǔ)密碼。替代方法包括:1.使用SQL*Plus重置SYS或SYSTEM用戶密碼;2.通過DBMS_CRYPTO包驗(yàn)證加密後的密碼。

oracle不取某個(gè)字段值怎麼做 oracle不取某個(gè)字段值怎麼做 Jun 04, 2025 pm 10:21 PM

在Oracle數(shù)據(jù)庫中,如果你想在查詢時(shí)不返回某個(gè)字段的值,可以使用以下三種方法:在SELECT語句中只列出需要的字段,不選擇不需要的字段。創(chuàng)建視圖,簡化查詢,但需注意視圖的複雜性和維護(hù)成本。使用子查詢或JOIN排除不需要的列,適合動(dòng)態(tài)排除列,但可能影響查詢性能。每種方法都有其適用場景和潛在缺點(diǎn),需根據(jù)具體需求和性能考慮選擇最適合的方法。

甲骨文中的物理和邏輯數(shù)據(jù)庫結(jié)構(gòu)有什麼區(qū)別? 甲骨文中的物理和邏輯數(shù)據(jù)庫結(jié)構(gòu)有什麼區(qū)別? Jun 10, 2025 am 12:01 AM

Oracle數(shù)據(jù)庫的邏輯結(jié)構(gòu)關(guān)注數(shù)據(jù)對(duì)用戶和開發(fā)者的組織方式,包括表、視圖、模式及表空間;物理結(jié)構(gòu)則涉及數(shù)據(jù)在磁盤上的實(shí)際存儲(chǔ),包括數(shù)據(jù)文件、重做日誌、控製文件等。 1.邏輯結(jié)構(gòu)包含表、視圖、索引、模式及表空間,決定用戶如何訪問數(shù)據(jù);2.物理結(jié)構(gòu)由數(shù)據(jù)文件、重做日誌、控製文件和歸檔日誌組成,負(fù)責(zé)數(shù)據(jù)的持久化與恢復(fù);3.表空間是連接邏輯與物理的關(guān)鍵橋樑,其容量受限於底層數(shù)據(jù)文件;4.不同角色關(guān)注層面不同,開發(fā)者側(cè)重邏輯優(yōu)化,DBA更關(guān)注物理管理;5.理解兩者差異有助於高效排查問題、優(yōu)化性能及合理管理

Impossible Cloud Network(ICNT)是什麼?怎麼樣?幣安即將上線項(xiàng)目ICN全面介紹 Impossible Cloud Network(ICNT)是什麼?怎麼樣?幣安即將上線項(xiàng)目ICN全面介紹 Jul 07, 2025 pm 07:06 PM

目錄一、ICN是什麼?二、ICNT最新動(dòng)態(tài)三、ICN與其他DePIN項(xiàng)目的對(duì)比及經(jīng)濟(jì)模型四、DePIN賽道的下一階段展望結(jié)語5月底,ICN(ImpossibleCloudNetwork)@ICN_Protocol宣布獲得NGPCapital戰(zhàn)略投資,估值達(dá)到4.7億美元,很多人第一反應(yīng)是:“小米投Web3了?”雖然這不是雷軍直接出手,但出手的,是曾押中小米、Helium、WorkFusion的那

See all articles