ThinkPHP Oracle データベースへの接続に関する詳細なチュートリアル [完全]_PHP チュートリアル
1.動作環境構築
システム:Windows7 Ultimate 64ビット
PHP環境:wampserver2.2e-php5.4.3-httpd2.2.22-mysql5.5.24 32ビット版
ダウンロードアドレス:http://www.ワンプサーバー.com/ja/
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 バージョンをダウンロードするだけです
注: ソフトウェアの「ビット」は非常に重要なので、通常の状況では、システムは 64 ビットであるため、64 ビットのソフトウェアを使用するのが最善ですが、ここではシステムを除いて、すべてに 32 を選択 このビットには理由があって、PLSQL Developer および WAMP の PHP 拡張機能を操作することが目的です。 PLSQL Developerには64ビット版がないためです。 64 ビットの Oracle データベースを使用して 32 ビットのクライアントをインストールできると言う友人もいますが、私の操作方法が気に入らない場合は、それを避けてください。もちろん、PLSQL Developer を使用せずに Oracle 独自の SQL Developer を使用する場合は、64 ビットまたは 32 ビットのどちらをインストールするかはあなた次第です。 PHP は、Oracle データベースに接続するために対応する拡張機能を開く必要があります。PHP 拡張機能もデータベース クライアントのビット数に対応する必要があるため、この拡張機能にはデータベース クライアントのサポートも必要です。冗長の終わり。
2. 環境構成
1. Oracle のインストールは自分で解決できますが、NetBeans IDE 7.1.2 も自分で解決できます。
2. Wamp のインストールについては説明しません。方法がわからない場合は、DOS から学び直してください。
3. WAMP は、Wamp がインストールされているフォルダーの下の www に PHP Web ページのフォルダーを定義します。つまり、D:WAMPwww です。当面はその他のカスタム変更は行いません。 wamp を起動します。システム トレイ アイコンが緑色の場合は、起動が正常であることを意味します。
4. localhost を開くと、次のインターフェイスが表示されます。これは、環境設定が基本的に OK であることを意味します。なぜ基本的なのかというと、Oracle の構成がまだ設定されていないからです。
5. 図に示すように、PHP 拡張機能メニューを開き、緑色のアイコンを左クリックし、php-oci8 の拡張機能をクリックします。再起動後は緑色になるまで待ちます。
6. 先ほどの localhost ページを再度開きます。図 4 に示す表示が見つかった場合は、PHP が現在 Oracle をサポートしていることを意味します。
私が使用している wamp クライアントと oracle クライアントは両方とも 32 ビットであることに注意してください。一方が 64 ビットである場合、oci 拡張子を開くことができず、自動環境監視ページに oci8 が表示されません。 PL/SQLを使用しない前提で、32ビットOracleと32ビットWAMPの組み合わせ、または64ビットOracleと64ビットWAMPの組み合わせでなければなりません。それ以外の場合は避けてください。
3. ThinkPHP の構成
1. ダウンロードした 3.0 正式バージョンを解凍します。これは、コアである ThinkPHP フォルダーのみです。
2. IDE を使用して新しいプロジェクトを作成します。他のフォルダーをカスタマイズする必要がある場合は、ここでは変更しません。
3. Thinkphp フォルダーをプロジェクト フォルダーにコピーし、新しい php ファイルを作成し、index.php という名前を付けます。
4. これらのファイルは既に IDE に表示されています。index.php を開き、次の内容を記述します。
require './ThinkPHP/ThinkPHP.php';
5. ブラウザーで localhost/プロジェクト名/index.php を開くと、Thinkphp が関連するファイルとフォルダーを生成します。 6. 設定ファイルを操作して、Conf フォルダーの下にある config.php ファイルを次のように変更します。
'DB_NAME' => 'DB_USER' => ' test', // ユーザー名
'DB_PWD' => 'test', // パスワード
'DB_PORT' => '1521', // ポート
);
Oracle データベースと mysql は構造が異なります。通常、デフォルトでインストールされるデータベース名は orcl です。複数のデータベース モニターを使用する場合は、特定のモニター フィールドに従って設定する必要があります。例: 私のローカル データベースは Orcl で、外部ネットワーク上の別のデータベースを監視しています。この外部ネットワーク データベースに接続する必要がある場合、記述する必要があるデータベース名は orcl2 です。
7. 上記の設定が完了すると、Oracle データベースに接続できるようになりますが、実際の thinkphp の操作ではどのような点に注意する必要がありますか?
最近、多くの友人が mysql に接続する方法に従っているため、Oreale では通常使用できない方法がいくつか発生しています。例:findAll、Selectメソッドが使用できず、必要なデータが取得できません。 Create メソッドと add メソッドでは、データを作成してデータベースに書き込むことはできません。
実際、私は以前の問題に基づいて数日間デバッグし、問題を見つけ、私自身の小さなプロジェクトの実践でそれを正常に使用できたので、今から私の経験を皆さんと共有します。
1. データベース接続と設定ファイルの詳細については説明しません。データテーブルの例に基づいて操作のみを説明します。
2、テーブル構造は次のとおりです:
3. このテーブルには ID 主キー、ユーザー名、パスワードの 3 つのフィールドがあります。Oracle データベースはテーブル名とフィールドを大文字に変換し、ID 主キーの自動インクリメントをサポートしていないため、別の方法を使用するしかありません。この機能を実現するには、例えばID自動シーケンス+ID自己インクリメントを実現するトリガーを使用します。
4. ThinkPHP では、Action はコントローラー、Model はモデル、ビューはテンプレートによって表されます。
まずコントローラーについてですが、リストの追加と取得の方法のみ紹介します。
次に、モデルについて話しますが、これが成功の主な理由です。なぜ? ThinkPHP にはフィールド マッピングがあり、MYSQL のサポートに最適です。基本的に MODEL を記述する必要はありませんが、M->add() を使用してデータを追加する場合、フィールドは $this になります。 -> _facade() メソッドは除外します。この方法で生成された SQL ステートメントは実行できないため、間違っているはずです。その結果、データをデータベースに追加できず、select() メソッドもフィルターされます。
繰り返しになりますが、ブレークポイントがフィルタリングされるとき、このフィルタリング メソッドはフィールド マッピングの配列を持ちます。このフィルタリング メソッドは、このフィールド配列と比較します。その結果、デバッグしたところ、新しい MODEL はフィールド マッピングをまったく追加しておらず、追加されたデータ フィールドに 1 つずつ対応することはできませんでした。これが間違いの核心です。
以下で解決策について話しましょう。基本的な MVC 構造によれば、PHP、JAVA、.NET はすべてそのような構造になっており、厳密な基準に従って MODEL 層のコードを記述する必要があります。つまり、データベースフィールドがマップされていると一致している必要があります。しかし、mysql を使用する多くの人は、単に MODEL でコードを記述しません。この習慣を Oracle で使用すると問題が発生します。
5. 次に、上記のデータ テーブルのコードを作成します。
私のアクションは次のようになります: UserAction.class.php。コントローラーについては、追加と検索の例のみを示しているので、コードは次のとおりです:
public functionindex() {
header("Content-Type : text/html; charset=utf -8");
$M_User = new UserModel();
$User_List = $M_User->select();
$this->assign('タイトル', 'ユーザー管理');
$this->assign('UserList', $User_List);
$this->display();
//ユーザー送信処理を追加
$M_User = new UserModel();
$data[ 'ユーザー名'] = $this->_post('ユーザー名')
$data['パスワード'] = 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"); ($M_User->getError( ) . ' [ return ]');
アクションの説明:
$M_User=新しいユーザーモデル();
このメソッドは、.NET のせいで常にこのように書かれているため、このように書くのが最適です。特定のモデルをインスタンス化するには、User テーブルを操作することが厳密に必要です。
POSTデータを取得するコードについてはあまり説明しません。
$M_User->create();
これは ThinkPHP のメソッドであり、違法なものを除外するのに役立ちます。
$Query_Result = $M_User->add($data);
このセクションはデータの追加に関するもので、このセクションは $M_User フィールドとフィルター フィールドに従ってインスタンス化する必要があるため、追加するデータを指定することに慣れています。もちろん、MODEL を適切にコーディングすれば問題ありません。以下のコードについては説明を省略します。公式文書はあります。
私のモデルは次のようなものです: UserModel.class.php
モデルの説明: これが重要なポイントです。これにより、新しい $M_User のマッピング フィールド配列が空にならず、フィルタリング メソッドが正常に認識してフィルタリングされないようにすることができます。
6. 上記の操作の後、Oracle のデータベース操作が完了しました。これで、ThinkPHP が提供するページング (limit)、find()、findAll などのメソッドを使用できるようになります。
出典 http://www.cnblogs.com/aceliu/

PHPSESSIONの障害の理由には、構成エラー、Cookieの問題、セッションの有効期限が含まれます。 1。構成エラー:正しいセッションをチェックして設定します。save_path。 2.Cookieの問題:Cookieが正しく設定されていることを確認してください。 3.セッションの有効期限:セッションを調整してください。GC_MAXLIFETIME値はセッション時間を延長します。

PHPでセッションの問題をデバッグする方法は次のとおりです。1。セッションが正しく開始されるかどうかを確認します。 2.セッションIDの配信を確認します。 3.セッションデータのストレージと読み取りを確認します。 4.サーバーの構成を確認します。セッションIDとデータを出力し、セッションファイルのコンテンツを表示するなど、セッション関連の問題を効果的に診断して解決できます。

session_start()への複数の呼び出しにより、警告メッセージと可能なデータ上書きが行われます。 1)PHPは警告を発し、セッションが開始されたことを促します。 2)セッションデータの予期しない上書きを引き起こす可能性があります。 3)session_status()を使用してセッションステータスを確認して、繰り返しの呼び出しを避けます。

PHPでのセッションライフサイクルの構成は、session.gc_maxlifetimeとsession.cookie_lifetimeを設定することで達成できます。 1)session.gc_maxlifetimeサーバー側のセッションデータのサバイバル時間を制御します。 0に設定すると、ブラウザが閉じているとCookieが期限切れになります。

データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 1。永続性:サーバーが再起動しても、セッションデータは変更されないままになります。 2。スケーラビリティ:分散システムに適用され、セッションデータが複数のサーバー間で同期されるようにします。 3。セキュリティ:データベースは、機密情報を保護するための暗号化されたストレージを提供します。

PHPでのカスタムセッション処理の実装は、SessionHandlerInterfaceインターフェイスを実装することで実行できます。具体的な手順には、次のものが含まれます。1)CussentsessionHandlerなどのSessionHandlerInterfaceを実装するクラスの作成。 2)セッションデータのライフサイクルとストレージ方法を定義するためのインターフェイス(オープン、クローズ、読み取り、書き込み、破壊、GCなど)の書き換え方法。 3)PHPスクリプトでカスタムセッションプロセッサを登録し、セッションを開始します。これにより、データをMySQLやRedisなどのメディアに保存して、パフォーマンス、セキュリティ、スケーラビリティを改善できます。

SessionIDは、ユーザーセッションのステータスを追跡するためにWebアプリケーションで使用されるメカニズムです。 1.ユーザーとサーバー間の複数のインタラクション中にユーザーのID情報を維持するために使用されるランダムに生成された文字列です。 2。サーバーは、ユーザーの複数のリクエストでこれらの要求を識別および関連付けるのに役立つCookieまたはURLパラメーターを介してクライアントに生成および送信します。 3.生成は通常、ランダムアルゴリズムを使用して、一意性と予測不可能性を確保します。 4.実際の開発では、Redisなどのメモリ内データベースを使用してセッションデータを保存してパフォーマンスとセキュリティを改善できます。

APIなどのステートレス環境でのセッションの管理は、JWTまたはCookieを使用して達成できます。 1。JWTは、無国籍とスケーラビリティに適していますが、ビッグデータに関してはサイズが大きいです。 2.cookiesはより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ホットトピック









