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

ホームページ php教程 php手冊 ThinkPHP を Oracle データベースに接続するための詳細なチュートリアル [完全版]

ThinkPHP を Oracle データベースに接続するための詳細なチュートリアル [完全版]

Jun 13, 2016 am 11:59 AM
oracle thinkphp windows7 1つ 建てる 操作する チュートリアル データベース 旗艦 環(huán)境 システム 詳しい 接続する

1. 動作環(huán)境構(gòu)築

システム:Windows7 Ultimate 64bit
PHP環(huán)境:wampserver2.2e-php5.4.3-httpd2.2.22-mysql5.5.24 32- bit バージョン
ダウンロードアドレス: 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


データベース操作ツール: PLSQL Developer 32-bit
ダウンロードアドレス: http://www.allroundautomations.com/plsqldev.html


開発ツール: NetBeans IDE 7.1.2
ダウンロード アドレス: http://netbeans.org/downloads/index.html PHP バージョンをダウンロードするだけです

注: ソフトウェアの「ビット」は非常に重要であるため、ここで繰り返し強調(diào)します。一般に、私たちのシステムは 64 ビットなので、64 ビットのソフトウェアを使用するのが最善ですが、システム以外はすべて存在します。 32 ビットを選択する理由は、PLSQL Developer および WAMP の PHP 拡張機能で動作するためです。 PLSQL Developerには64ビット版がないためです。 64 ビットの Oracle データベースを使用して 32 ビットのクライアントをインストールできると言う友人もいますが、私の操作方法が気に入らない場合は、それを避けてください。もちろん、PLSQL Developer を使用せずに Oracle 獨自の SQL Developer を使用する場合は、64 ビットまたは 32 ビットのどちらをインストールするかはあなた次第です。 PHP は、Oracle データベースに接続するために対応する拡張機能を開く必要があります。PHP 拡張機能もデータベース クライアントのビット數(shù)に対応する必要があるため、この拡張機能にはデータベース クライアントのサポートも必要です。冗長の終わり。

2. 環(huán)境構(gòu)成

1. Oracle のインストールについては説明しません。NetBeans IDE 7.1.2 も同様です。それ自體で解決します。

2. Wamp のインストールについては説明しません。方法がわからない場合は、DOS から學び直してください。

3. WAMP は、Wamp がインストールされているフォルダーの下の www に PHP Web ページのフォルダーを定義します。つまり、D ドライブにインストールしました。當面はその他のカスタム変更は行いません。 wamp を起動します。システム トレイ アイコンが緑色の場合は、起動が正常であることを意味します。

4. localhost を開くと、次のインターフェイスが表示されます。これは、環(huán)境設(shè)定が基本的に OK であることを意味します。なぜ基本的なのかというと、Oracle の構(gòu)成がまだ設(shè)定されていないからです。

5. 図に示すように、PHP 拡張機能メニューを開き、[PHP 拡張機能] を左クリックし、php-oci8 の拡張機能をクリックします。再起動して緑色になるまで待ちます。これはOKを意味します。

6. もう一度 localhost ページを開きます。図 4 に示す表示が見つかった場合は、PHP が現(xiàn)在 Oracle をサポートしていることを意味します。

私が使用している wamp クライアントと oracle クライアントは両方とも 32 ビットであることに注意してください。一方が 64 ビットである場合、oci 拡張子を開くことができず、自動環(huán)境監(jiān)視ページに oci8 が表示されません。 PL/SQLを使用しない前提で、32ビットOracleと32ビットWAMPの組み合わせ、または64ビットOracleと64ビットWAMPの組み合わせでなければなりません。それ以外の場合は避けてください。

3. ThinkPHP の構(gòu)成

1. プロジェクト內(nèi)に必要なのは、コアとなる ThinkPHP フォルダーだけです。
2. IDE を使用して新しいプロジェクトを作成します。他のフォルダーをカスタマイズする必要がある場合は、ここでは変更しません。
3. Thinkphp フォルダーをプロジェクト フォルダーにコピーし、新しい php ファイルを作成し、index.php という名前を付けます。
4. これらのファイルはすでに IDE に表示されています。index.php を開き、次の內(nèi)容を記述します。

コードをコピーします。 コードは次のとおりです。 :


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


5 、ブラウザで localhost/プロジェクト名/index.php を開くと、Thinkphp が関連するファイルとフォルダーを生成します。
6. 設(shè)定ファイルを操作し、Conf フォルダー內(nèi)の config.php ファイルを見つけて次のように変更します。

コードをコピーします コードは次のとおりです。次のように:


return array(
'DB_TYPE' => 'Oracle', // データベース タイプ
'DB_HOST' => '192.168 .0.8', // サーバーアドレス
'DB_NAME' => 'orcl', // データベース名
'DB_USER' => 'test', // ユーザー名
'DB_PWD' => 'test ', // パスワード
'DB_PORT' => '1521', // ポート
);
Oracle數(shù)據(jù)庫和mysql 的結(jié)構(gòu)不同,一般默認安裝的數(shù)據(jù)庫名是orcl,如果你使用了多個數(shù)據(jù)庫監(jiān)聽,那么就要根據(jù)具體的監(jiān)聽字段來設(shè)置。比如:我本機數(shù)據(jù)庫堅挺是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的實際操作中有什么注意的地方,且接著往下看。

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

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

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

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



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

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

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

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

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

下面就來說解決方法,其實很簡單,按照基本的MVC結(jié)構(gòu),不管是PHP還是JAVA還是.NET都有這樣的結(jié)構(gòu),那么按照嚴格的標準,MODEL層的代碼是必須寫的,就是要和數(shù)據(jù)庫的字段做映射。但是很多用mysql的,就直接沒有去寫MODEL里面的代碼。這種習慣被用到了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();

這個方法最好這么寫,因為做.NET的原因,一直都這么寫的。針對具體的模型進行實例化,嚴格規(guī)定我就要對User表進行操作了。

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

$M_User->create();

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

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

このセクションはデータの追加に関するもので、このセクションは $M_User フィールドとフィルター フィールドに従ってインスタンス化する必要があるため、追加するデータを指定することに慣れています。もちろん、MODEL を適切にコーディングすれば問題ありません。以下のコードについては説明を省略します。公式文書はあります。

私のモデルは次のようなものです: UserModel.class.php

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

モデルの説明: これが重要なポイントです。この方法でのみ、new によって生成された $M_User のマッピング フィールド配列が POST データに対応し、フィルタリング メソッドがそれを認識できるようになります。通常はフィルタされません。

6. 上記の操作が完了すると、ThinkPHP が提供するページング (limit)、find()、findAll などのメソッドを使用してデータを操作できるようになります。

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

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當する法的責任を負いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

MySQL vs. Oracle:ライセンス、機能、および特典 MySQL vs. Oracle:ライセンス、機能、および特典 May 08, 2025 am 12:05 AM

MySQLとOracleの主な違いは、ライセンス、機能、および利點です。 1。ライセンス:MySQLは無料で使用するためのGPLライセンスを提供し、Oracleは高価な獨自のライセンスを採用しています。 2。機能:MySQLには単純な機能があり、Webアプリケーションや中小企業(yè)に適しています。 Oracleには強力な機能があり、大規(guī)模なデータや複雑なビジネスに適しています。 3.利點:MySQLはオープンソース無料で、スタートアップに適しており、Oracleはパフォーマンスが信頼でき、大企業(yè)に適しています。

Redis:従來のデータベースサーバーとの比較 Redis:従來のデータベースサーバーとの比較 May 07, 2025 am 12:09 AM

Redisは、並行性が高く、遅延の低いシナリオの従來のデータベースよりも優(yōu)れていますが、複雑なクエリやトランザクション処理には適していません。 1.Redisは、メモリストレージ、高速読み取り速度、および高い並行性と低遅延の要件に適しています。 2.従來のデータベースは、ディスクに基づいており、複雑なクエリとトランザクション処理をサポートし、データの一貫性と永続性が強い。 3. Redisは、従來のデータベースのサプリメントまたは代替品として適していますが、特定のビジネスニーズに応じて選択する必要があります。

迂回することなくJavaを?qū)Wぶ方法。 Javaを効率的に學習するための方法とテクニックを共有します 迂回することなくJavaを?qū)Wぶ方法。 Javaを効率的に學習するための方法とテクニックを共有します May 20, 2025 pm 08:24 PM

迂回することなくJavaを?qū)Wぶための鍵は次のとおりです。1。コアの概念と文法を理解する。 2。もっと練習します。 3.メモリ管理とごみ収集を理解する。 4。オンラインコミュニティに參加します。 5.他の人のコードを読む。 6.一般的なライブラリとフレームワークを理解します。 7.一般的な間違いに対処することを?qū)Wぶ。 8。學習計畫を立て、段階的に進みます。これらの方法は、Javaプログラミングを効率的に習得するのに役立ちます。

Redisは主にデータベースですか? Redisは主にデータベースですか? May 05, 2025 am 12:07 AM

Redisは主にデータベースですが、単なるデータベース以上のものです。 1.データベースとして、Redisは持続性をサポートし、高性能のニーズに適しています。 2。キャッシュとして、Redisはアプリケーションの応答速度を改善します。 3。メッセージブローカーとして、Redisはリアルタイム通信に適したPublish-Subscribeモードをサポートしています。

何を?qū)Wぶか? Java學習ルートと本質(zhì)的な知識ポイントの概要 何を?qū)Wぶか? Java學習ルートと本質(zhì)的な知識ポイントの概要 May 20, 2025 pm 08:15 PM

Javaの學習には、基本的な構(gòu)文、オブジェクト指向プログラミング、コレクションフレームワーク、例外処理、マルチスレッド、I/Oストリーミング、JDBC、ネットワークプログラミング、リフレクションや注釈などの高度な機能を?qū)W習する必要があります。 1.基本的な構(gòu)文には、変數(shù)、データ型、演算子、および制御フローステートメントが含まれます。 2。オブジェクト指向のプログラミングは、クラス、オブジェクト、継承、多型、カプセル化、抽象化をカバーしています。 3.コレクションフレームワークには、ArrayList、LinkedList、Hashset、およびHashmapが含まれます。 4.例外処理により、トライキャッチブロックを介したプログラムの堅牢性が保証されます。 5.マルチスレッドプログラミングには、スレッドのライフサイクルと同期を理解する必要があります。 6。I/Oストリームは、データの読み取り、書き込み、ファイル操作に使用されます。 7。JDBCは、データベースとの対話に使用されます。 8。ネットワークプログラミングパスs

Oracleソフトウェア:効率とパフォーマンスの最大化 Oracleソフトウェア:効率とパフォーマンスの最大化 May 06, 2025 am 12:07 AM

Oracleソフトウェアは、さまざまな方法でパフォーマンスを向上させることができます。 1)SQLクエリを最適化し、データ送信を削減します。 2)クエリの速度とメンテナンスコストのバランスをとるために、インデックスを適切に管理します。 3)メモリを合理的に構(gòu)成し、SGAとPGAを最適化します。 4)I/O操作を削減し、適切なストレージデバイスを使用します。

TableauなどのBIツールを使用したOracleデータベースの接続とデータの視覚化 TableauなどのBIツールを使用したOracleデータベースの接続とデータの視覚化 May 19, 2025 pm 06:27 PM

データの視覚化のためにOracleデータベースをTableauに接続するには、次の手順に従う必要があります。1。TableauでOracle Database接続を構(gòu)成し、ODBCまたはJDBCドライバーを使用します。 2。データを探索し、バーチャートなどの視覚化を作成します。 3.パフォーマンスを改善するために、SQLクエリとインデックスを最適化します。 4. Oracleの複雑なデータ型と機能を使用して、カスタムSQLクエリを使用して実裝します。 5.クエリ速度を改善するための具體化されたビューを作成します。 6.詳細な分析のために、ダッシュボードなどのTableauのインタラクティブ機能を使用します。

Mongodb vs. Oracle:NOSQLとリレーショナルアプローチの探索 Mongodb vs. Oracle:NOSQLとリレーショナルアプローチの探索 May 07, 2025 am 12:02 AM

さまざまなアプリケーションシナリオでは、MongoDBまたはOracleの選択は特定のニーズに依存します。1)大量の非構(gòu)造化データを処理する必要があり、データの一貫性の高い要件がない場合は、MongoDBを選択します。 2)厳密なデータの一貫性と複雑なクエリが必要な場合は、Oracleを選択します。

See all articles