PHP を使用して Oracle データベースを操作する
11. データベース接続
前のセクションでは、PHP と MySQL データベースの基本的な操作知識を紹介しました。また、インターネット上には PHP と MySQL に関するほとんどのチュートリアルがあります。 MySQL は無料なので、多くの人を魅了するかもしれません。 MySQL は幅広い用途に使用できるため、ここでは MySQL の使用法について詳しく説明しません。 Oracle はエンタープライズ アプリケーションで広く使用されているため、Oracle を使用して PHP とデータベースの接続についてさらに紹介します。 Oracle データベースの設計原則については、議論の範囲を超えているため、言及しません。
PHP は、Oracle に接続するための 2 つの関数セット、つまり ORA_ 関数と OCI 関数を提供します。 ORA_ 関数は少し古いです。 OCI機能のアップデートにより改善されたとのこと。 2 つの使用構文はほぼ同じです。前述したように、PHP インストール オプションは両方の使用をサポートしている必要があります。
Microsoft Windows プラットフォーム上での PHP3 をサポートする Apache サーバーのインストールに関する詳細および Oracle データベースに関する詳細については、次の URL を参照してください: www.csoft.net/~vsbabu/articles/oraphp.html。
11.1 接続
if ($c>{
echo "SUCCESS ! データベースn";
}
else
{
echo "失敗 :-(データベースに接続しませんn";
}
Ora_Logoff($conn);
phpinfo();
?>
上記のコードは、TNSNAME (tnsnames.ora ファイルで指定) で定義された Oracle データベース名を使用します。ユーザー名とパスワードは、成功した接続に基づいて、ゼロ以外の接続 ID を返し、それを変数 $conn に保存します。データベースの準備ができたら、実際のデータベース クエリに進みましょう。次のコードは、接続とクエリの典型的な例を示しています:
/*
* データベースに接続してクエリを実行します
*/
function printoraerr($in_cur)
{
// エラーがあるかどうかを確認しますin Oracle
// If エラーがある場合は表示されます
// ポインタがアクティブ化されると、Oracle への各リクエストの後にこの関数が呼び出されます
if(ora_errorcode($in_cur))
echo "Oracle code - " .ora_error($in_cur)."n";
return;
}
/**メインプログラム*/
if (!($c>{
echo "データベースへの接続に失敗しました";
exit;
}
echo "接続として接続されました - $connn";
echo "カーソルを開きます...
n";
$cursor=ora_open($conn);カーソル);
echo "オープンされたカーソル - $ カーソル
n";
$qry="select user,sysdate from Dual"; qry ...
n" ;
ora_parse($cursor,$qry,0); printoraerr($cursor);
echo "クエリを解析しました
n";
echo "カーソルを実行しています...
n";
ora_exec($cursor); printoraerr($cursor);
echo "実行されたカーソル
n";
echo "フェッチカーソル ...
n";
while(ora_fetch($cursor))
{
$user= ora_getcolumn($cursor,0);
$sysdate=ora_getcolumn($cursor,1);
echo = $user, $sysdate n";
}
echo "すべてのレコードを取得しました
n";
echo "カーソルを閉じています ...
n" ;
ora_close($cursor);
echo "カーソルを閉じました
n";
ora_logoff($conn);
n";
?>
(翻訳注: 上記のコード スニペットにはコメントがありません。PHP マニュアルの Oracle データベース関数セクションを参照してください)
11.3 結果の表示
次のコードは、データベースにクエリを実行する方法を示しています。結果を出力します:
function printoraerr($in_cur, $conn )
{
// Oracle にエラーがあるかどうかを確認します
// エラーがある場合は表示します
// ポインタがアクティブになると、これが表示されます関数は各 Oracle リクエストの後に呼び出されます
// エラーが発生した場合は、すぐに終了します
if(ora_errorcode ($in_cur))
{
echo "Oracle code - ".ora_error($in_cur)."
n ";
ora_logoff($conn);
exit;
}
return;
}
function exequery( $w_qry,$conn)
{
$cursor=ora_open($conn); printoraerr($cursor,$conn);
ora_parse($cursor,$w_qry,0);
ora_exec($cursor,$conn);
$w_numcols=ora_numcols;カーソル);
// ヘッダーを表示
echo "
n"; i=0;$i<$w_numcols;$i++) n";
{
$align=(ora_columntype( $cursor,$i)=="NUMBER")?"RIGHT":"LEFT"
echo "t".ora_columnname($cursor,$i)." TH>n";
}
echo "
while(ora_fetch($cursor))
{
echo "n"; n";
for ($i=0;$i< $w_numcols;$i++)
{
$align=(ora_columntype($cursor,$i)=="NUMBER")? "RIGHT":"LEFT";
if(ora_columntype($cursor,$i)==" LONG")
echo ""
ora_getcolumn($cursor) ,$i)."n";
else
echo "
".ora_getcolumn($cursor,$i)." TD>n";
printoraerr($cursor,$conn);
}
$numrows++;
echo "
}
if ($numrows==0)
echo "< TR>クエリはレコードを返しませんでした <n";
else
{
echo " ;n"; n";
echo "Count n";
echo "$numrows TH>n";
echo "
}
echo " TABLE>n";
ora_close($cursor);
return;
}
//&
if( !($c>{
echo "エラー: データベースに接続できません";
終了;
}
$qry="SELECT
deptno "部門"
,empno "従業員"
,empnm "名前"
,salary "給与"
従業員から
ORDER BY 1,2"; ($conn);
?>
(翻訳者注: 上記のコード部分にはコメントがありません。PHP マニュアルの Oracle データベース関数のセクションを参照してください)
11.4 HTTP に基づく Oracle ログイン
PHP ページの前に次のコードを追加します。コード。Oracle ログインを確認します。 $SID を正しく設定する必要があることに注意してください。
if(!isset($PHP_AUTH_USER))
{
Header("WWW-authenticate: Basic realm="$SID"");
$title= "ログイン手順";
echo "
n"
サイトに入る権限がありません
else
{
if (!($c>{
Header) ("WWW-authenticate: Basic realm="$SID"");
Header("HTTP/1.0 401 Unauthorized");
$title="ログイン手順";
あなたには権限がありませんサイトに入る
n";
終了;
}
}
?>
以上、淘宝初心者入門編とPHP初心者入門編(十二回)を紹介しましたが、淘宝網初心者入門編の内容も含めて、PHP入門に興味のある友人の参考になれば幸いです。