ホームページ php教程 php手册 PHP+Oracle (OCI) 暫定版

PHP+Oracle (OCI) 暫定版

Jun 21, 2016 am 09:09 AM
lt offset oracle php quot

オラクル

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 < 0) {
$offset=0;
}

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

";
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 が表示されます。」のようなコメントが表示されます。 $end = ($begin+($limit-1));
if ($end > $total_rows[0]) {
$end = $total_rows[0];

echo " $total_rows[0] の結果。
n";
echo "$begin から $end までの結果を表示しています。 ;
n";

/*
さあ、本題に取り掛かります。元のステートメント識別子を解放してから SQL ステートメントを作成します。SQL ステートメントを分析して実行します。
コードを記述するとき 注: MYSQL とは異なり、 Oracle では、SQL ステートメント内の制限ステートメントはサポートされていません。特定の行を選択するにはさまざまな方法がありますが、最良の方法は、選択結果を一時テーブルに入れるか、すべての結果を「バッファリング」することです。このようなメソッドは、このチュートリアルの範囲外です。以下でさらに説明する、より単純なアプローチを使用します。
*/
OCIFreeStatement($stmt);

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

$stmt = OCIParse($conn, $sql) {
echo "< h1>エラー - SQL ステートメントを解析できませんでした。";
exit;
}

OCIExecute($stmt);

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

$i=0;
$j=0;
while( OCIFetchInto($stmt, &$result_array) ) {
if ($i>=$offset) {
if ($j <$limit) ) {
for ($k=0; $k<=count($result_array); $k++) {
echo $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;
echo "< n";次に、ページをループして番号付きリンクを作成します
// 例 1 2 3 4 5 NEXT >> for ($i=1;$i<=$pages;$i++) {
// 現在のリンクを確認しますpage
if (($offset/$limit) == ($i-1)) {
// $i は現在のページと等しいので、リンクを表示しないでください
echo "$i "; else {
/ / $i は現在のページではないため、ページ $i へのリンクを表示します
$newoffset=$limit*($i-1);
echo "
$i< /a> n";
}
}

//現在のページが最後のページかどうかを確認します
if (!((($offset/$limit)+1)==$pages) && $pages !=1) {
// まだ最後のページにないので、次のリンクを表示します
$newoffset=$offset+$limit;
echo "
NEXT > ;>< ;/a>

n";
}

/*
これで Oracle の使用は完了したため、最後のステートメントのフラグを解放して終了します。
*/

OCIFreeStatement($stmt);

?>





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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

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 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHPとPython:2つの一般的なプログラミング言語を比較します PHPとPython:2つの一般的なプログラミング言語を比較します Apr 14, 2025 am 12:13 AM

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPの現在のステータス:Web開発動向を見てください PHPの現在のステータス:Web開発動向を見てください Apr 13, 2025 am 12:20 AM

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHP:Web開発の重要な言語 PHP:Web開発の重要な言語 Apr 13, 2025 am 12:08 AM

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHP:多くのウェブサイトの基礎 PHP:多くのウェブサイトの基礎 Apr 13, 2025 am 12:07 AM

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

PHPの永続的な関連性:それはまだ生きていますか? PHPの永続的な関連性:それはまだ生きていますか? Apr 14, 2025 am 12:12 AM

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

PHP対その他の言語:比較 PHP対その他の言語:比較 Apr 13, 2025 am 12:19 AM

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHP対Python:コア機能と機能 PHP対Python:コア機能と機能 Apr 13, 2025 am 12:16 AM

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

PHPの目的:動的なWebサイトの構築 PHPの目的:動的なWebサイトの構築 Apr 15, 2025 am 12:18 AM

PHPは動的なWebサイトを構築するために使用され、そのコア関数には次のものが含まれます。1。データベースに接続することにより、動的コンテンツを生成し、リアルタイムでWebページを生成します。 2。ユーザーのインタラクションを処理し、提出をフォームし、入力を確認し、操作に応答します。 3.セッションとユーザー認証を管理して、パーソナライズされたエクスペリエンスを提供します。 4.パフォーマンスを最適化し、ベストプラクティスに従って、ウェブサイトの効率とセキュリティを改善します。

See all articles