PHP+Oracle(OCI) 予備_PHP チュートリアル

WBOY
リリース: 2016-07-15 13:23:22
オリジナル
1057 人が閲覧しました

Oracle (OCI) から始めましょう データベースとして Oracle を選択する PHP ユーザーがますます増えているため、PHP リリース環境で Oracle インターフェイスにアクセスする方法がますます重要になっています。まず、シンプルで基本的かつより明示的な Oracle シナリオを簡単に見ていきます。 Oralce と Oralce8 は、PHP の OCI8 関数ライブラリを使用します。 PHP マニュアル (http://www.php.net/manual/ref.oci8.php) に簡単な説明があります。 これらの関数を使用すると、Oracle および Oracle7d データベースにアクセスできます。これらの関数は、Oracle8 Call-Interface (OCI8) を使用します。 。これらの拡張機能を使用するには、Oracle8 のクライアント ライブラリが必要です。

これらの拡張関数は、標準の Oracle 拡張関数よりも柔軟で、PHP のグローバル変数とローカル変数、および Oracle との統合をサポートしており、ユーザー補助変数を定義できます。

ここからは、Oracle のバージョンを指すために「Oracle」を使用します。この記事は、PHP と Oracle がインストールされ実行されていることを前提としています。 Oracle のヘルプは、http://www.oracle.com または http://technet.oracle.com で参照できます。

この記事のポイントは

1. ORALCLE に接続する
2. SQL ステートメントを構築して実行する
3. 追加機能として結果を「マークされたページ」に制限/オフセットする

非常に大規模なデータ セットから派生した制限/オフセットを表示するクエリを実行する方法を確認できます。


/*基本的な使い方から解決方法を紹介します。この例で使用されるファイルは、Rod Kreisler によって書かれた記事 (http://www.phpbuilder.com/columns/rod20000221.php3) の新しいバージョンです。ファイルの新しいバージョンは http://php.socket7.net にあります。 $offset が 0 または空に設定されている場合は、0 に設定します。 */

if (empty($offset) || $offset $offset=0;
}
/*基本的な使い方から解決方法を紹介します。この例で使用されるファイルは、Rod Kreisler によって書かれた記事 (http://www.phpbuilder.com/columns/rod20000221.php3) の新しいバージョンです。ファイルの新しいバージョンは http://php.socket7.net にあります。 $offset が 0 または空に設定されている場合は、0 に設定します。

*/

if (empty($offset) || $offset $offset=0;
}
$limit = 3;

/*

必要に応じて接続できますデータベースを使用する場合は、ORACLE_SID を直接指定します。 CGI として PHP を使用すると、不連続接続が使用されます。この例では、この不連続接続を使用してみましょう。 Windows ではこれはレジストリで設定できますが、UNIX では putenv() 関数 putenv("ORALCE_SID=ORASID"); を使用できます
または、データベースに接続するときに ORACLE_SID を直接参照することもできます。この例では、ORACLE_SID を直接参照してみましょう。
APACHE のモジュールとして PHP を使用すると、永続的な接続を使用できます。 PHP を CGI として使用する場合は非永続接続を使用しますが、この例では非永続接続を使用します。
*/

$conn = OCILogon("user_name", "password", "ORASID");

/*

エラー メッセージ。データベースが接続されていない場合は、エラー メッセージが表示され、スクリプトは終了します。

*/

if (!$conn) {

echo "

ERROR - Could not connect to Oracle
";

exit;

}

/* 接続が成功した場合、$conn はコネクタです。そうしないと、スクリプトが終了し、「Oracle に接続できませんでした」というエラー メッセージが出力されます。

ここで SQL ステートメントの分析と作成を開始し、無制限のクエリ結果からカウント可能なレコードを取得します。
ここでのフォーマットステートメント「Select count(*) from table_name」は、データベース内で実行される SQL 関数である count() と同等です。 PHP に依存して計算された結果を返すよりも優れています。
*/

$sql = "table_name から count(*) を選択";

$stmt = OCIParse($conn, $sql);

if(!$stmt) {

echo "
エラー - SQL を解析できませんでしたstate.
";

exit;

}

/* 間違った SQL ステートメントを入力するか、別のエラーが発生すると、「SQL を解析できません」というエラー メッセージが表示されます。$stmt は定義ステートメントになりました。

ここで parse ステートメントを実行します
*/

OCIExecute($stmt);

/*

これでステートメントが実行されましたが、ご覧のとおり、OCIParse で指定されているとおり、結果識別子は OCIExecute() から返されません。 () によって返される結果には、Oracle が必要とするすべての情報が含まれています。

ここで、このクエリの結果の選択を開始します。$total rows[0] には数値が含まれます。行が返されない場合は、エラーが表示され、スクリプトは終了します。
*/

OCIFetchInto($stmt, &$total_rows);

if ( !$total_rows[0] ) {

echo "

エラー - 行が返されません!
"

}


/*
このコードはオプションですが、返される結果がより明確になり、「合計 15 件のレコードがあり、結果 4 から 15 が表示されます */

」のようなコメントが表示されます。

$begin =($offset+1);
$end = ($begin+($limit-1));
if ($end > $total_rows[0]) {
$end = $total_rows[0]; }

echo "

$total_rows[0]の結果があります。n";
echo "現在、
$beginから$endまでの結果を表示しています。
/*

今、取得する時間ですコードを記述するときの注意事項: MYSQL とは異なり、Oracle は SQL ステートメント内の制限ステートメントをサポートしません。そのため、特定の行を選択するにはさまざまな方法がありますが、最良の方法は、選択結果を一時テーブルに配置するか、すべての結果を「バッファリング」することです。このようなメソッドは、このチュートリアルの範囲外です。以下でさらに説明する、より単純なアプローチを使用します。

*/
OCIFreeStatement($stmt);

$sql = "テーブル名から * を選択";

$stmt = OCIParse($conn, $sql) {

echo "

エラー- SQL ステートメントを解析できませんでした。

";

exit;

}

OCIExecute($stmt);


/*
次に、結果を表示します。最も簡単な方法は、結果コレクションに対してこのループを使用することです。最終結果の表示には HTML が使用されますが、この例は非常に単純なので、HTML は使用しません。 コードを記述するときの注意: 上で指定したように、Oracle には制限がないため、すべての結果セットから必要な結果を取り出し、すでに持っている結果を終了することによってこのループを実行する必要があります。

このセクションでは、いくつかの異なるアプローチを紹介しますが、実際には、このコードを記述するより良い方法があるはずです。私の方法は読みやすいとは言えませんが、機能すると思います。

*/


$i=0;
$j=0;
while( OCIFetchInto($stmt, &$result_array) ) {
if ($i>=$offset) {

if ($j for ($k=0; $kecho $result_array[$k]." ";
echo "
"
; } $i++; }
echo "
";

/*
結果が現在のページに表示されます。今度は、訪問者が NEXT/PREV をクリックして他のページに移動できるようにします
*/

/ / 結果に必要なページ数を計算します。
$pages = intval($total_rows[0]/$limit);
// $pages は残りの部分を除いた必要なページ数の合計になります

if ($total_rows[ 0]%$limit) {
// 残りがあるので 1 ページ追加します
$pages++;

}


// 最初のページが表示されるとき、PREV 接続は表示されません

if ($offset!=0 ) {

$prevoffset=$offset-$limit
エコー "


;



http://www.bkjia.com/PHPjc/446859.html
www.bkjia.com
tru​​e

http://www.bkjia.com/PHPjc/446859.html

Oracle (OCI) を皮切りに、データベースとして Oracle を選択する PHP ユーザーが増えるにつれ、PHP リリース環境で Oracle インターフェイスにアクセスする方法がますます重要になってきました。から始めます...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート