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. 追加機能として結果を「マークされたページ」に制限/オフセットする
非常に大規模なデータ セットから派生した制限/オフセットを表示するクエリを実行する方法を確認できます。
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) {
ERROR - Could not connect to Oracle
";
ここで SQL ステートメントの分析と作成を開始し、無制限のクエリ結果からカウント可能なレコードを取得します。
ここでのフォーマットステートメント「Select count(*) from table_name」は、データベース内で実行される SQL 関数である count() と同等です。 PHP に依存して計算された結果を返すよりも優れています。
*/
$sql = "table_name から count(*) を選択";
$stmt = OCIParse($conn, $sql);
if(!$stmt) {echo "
エラー - SQL を解析できませんでしたstate.
";
ここで parse ステートメントを実行します
*/
OCIExecute($stmt);
/*
これでステートメントが実行されましたが、ご覧のとおり、OCIParse で指定されているとおり、結果識別子は OCIExecute() から返されません。 () によって返される結果には、Oracle が必要とするすべての情報が含まれています。ここで、このクエリの結果の選択を開始します。$total rows[0] には数値が含まれます。行が返されない場合は、エラーが表示され、スクリプトは終了します。
*/
OCIFetchInto($stmt, &$total_rows);
if ( !$total_rows[0] ) {
echo "エラー - 行が返されません!
"
」のようなコメントが表示されます。
$begin =($offset+1);
$end = ($begin+($limit-1));
if ($end > $total_rows[0]) {
$end = $total_rows[0]; }
$total_rows[0]の結果があります。n";
echo "現在、
$beginから$endまでの結果を表示しています。
/*
*/
OCIFreeStatement($stmt);
$sql = "テーブル名から * を選択";
echo "
エラー- SQL ステートメントを解析できませんでした。";
exit;}
このセクションでは、いくつかの異なるアプローチを紹介しますが、実際には、このコードを記述するより良い方法があるはずです。私の方法は読みやすいとは言えませんが、機能すると思います。
*/
$i=0;
$j=0;
while( OCIFetchInto($stmt, &$result_array) ) {
if ($i>=$offset) {
if ($total_rows[ 0]%$limit) {
// 残りがあるので 1 ページ追加します
$pages++;
// 最初のページが表示されるとき、PREV 接続は表示されません
$prevoffset=$offset-$limit
エコー "
;
http://www.bkjia.com/PHPjc/446859.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/446859.html