PHP を通じて、データベースに簡単に接続してリクエストを行うことができますデータを作成してウェブサイトに表示したり、データベース内のデータを変更したりすることもできます。 MySQL は非常に人気のあるデータベースであり、インターネット上には PHP および 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。
1
接続
if ($ conn=Ora_Logon("user@TNSNAME","password")) {
echo "SUCCESS ! データベースに接続しました; }
else
{
echo "失敗:-( データベースnに接続できませんでした"
; }
Ora_Logoff($conn);
phpinfo(); 🎜>上記のコードは
TNSNAME (tnsnames.ora ファイルで指定) を使用します。成功した接続に基づいて、Oracle データベース名、ユーザー名、およびパスワード、ora_logon関数は ゼロ以外の 接続ID を返し、それを変数 $conn in. 2 Query
への接続があると仮定します。データベースの準備ができました。データベース クエリの実際のアプリケーションを見てみましょう。次のコードは、接続とクエリの典型的な例を示しています。 🎜>
データベースに接続し、クエリを実行します
*/ function printoraerr
($
in_cur
) { //
Oracle のエラーを確認します
//
エラーがある場合は、表示します // 当指针が活性化されているときの每次请要求Oracle後调用该関数
if(ora_errorcode($in_cur)) echo "Oracle コード - ".
ora_error($in_cur)."n"; 戻る;
}
/**
メインプログラム*/ if (!($
conn=ora_logon("user@TNSNAME","パスワード"))) {
echo "データベースへの接続に失敗しました";
終了;
}
echo "接続として接続されました - $
conngt;br>n"; echo "カーソルを開いています...<
br>n"; $cursor=
ora_open($conn); printoraerr($cursor); echo "開いたカーソル - $cursor<
br>n"; $
qry="デュアルから user,sysdate を選択します"; echo "クエリを解析しています $
qry ...<br>n";
ora_parse($cursor,$qry,0); printoraerr($cursor); echo "クエリが解析されました
br>n"; echo "カーソルを実行しています...<
br>n";
ora_exec($cursor); printoraerr($cursor); echo "カーソルを実行しました
br>n"; echo "カーソルを取得しています ...<
br>n"; while(
ora_fetch($cursor)) {
$user=
ora_getcolumn($cursor,0); printoraerr($cursor); $
sysdate=ora_getcolumn($cursor,1); printoraerr($cursor); echo " row = $user, $
sysdate <br>n"; }
echo "すべてのレコードを取得しました<
br>n"; echo "カーソルを閉じています...<
br>n";
ora_close($cursor); echo "カーソルを閉じた
br>n"; echo "Oracle からログオフしています... <
br>n";
ora_logoff($conn); echo "Oracle からログオフしました <
br>n"; ?>
(译者注:以上代序段缺少注释,请读者参照PHP マニュアルのOracleデータ库関数数部分)
3
显示结果
以下代演演示了怎样查询データ库并将結果出力:
function
printoraerr($in_cur, $conn) {
//
检查Oracle かどうか错 //
如果存在错误则显示 // ポインタがアクティブ化されると、Oracle
への各リクエストの後にこの関数が呼び出されます//エラーが発生した場合は、すぐに終了します
if(ora_errorcode($in_cur))
{
echo "Oracle コード - ".ora_error( $in_cur)."<br>n";
ora_logoff($conn); ;
}
return;
}
関数
exequery($w_qry,$conn) {
$cursor =
ora_open($conn) printoraerr($cursor,$conn); ($ カーソル,$w_qry,0); printoraerr
($cursor,$conn); ora_exec($cursor); ($
カーソル,$conn); $numrows=0; $w_numcols
=ora_numcols ($ カーソル);
// ヘッダーを表示
echo "
n"; n"; for ($i n"; while(
=0;$i<$
w_numcols;$i
++ )
{ $align=(ora_columntype($cursor,$i
)=="NUMBER")?"RIGHT":"LEFT"; echo "t". n"; 🎜 >echo "
ora_columnname($cursor,$i)."
ora_fetch($cursor)) { echo "n"; $ i n" }
=0;$i<$
w_numcols;$i
++) { $align=(
ora_columntype
($<🎜) > カーソル,$i
)=="NUMBER")?"RIGHT":"LEFT"; if(ora_columntype($カーソル,$i
)= = "LONG")
エコー "ora_getcolumn($cursor,$i
) . "n"; else echo "ora_getcolumn($
cursor) , $i
)."n"; printoraerr($cursor,$conn
)
$numrows++; echo "
if ($numrows==0) echo "< TR> ;クエリはレコードを返しませんでした n"; else {
echo "n"; n"; } echo "
echo "Count n " ;
echo "$numrows n";
echo "
ora_close
($cursor)
}
//
if(!($
conn=ora_logon
("
user@SID","パスワード
")))
{ echo "エラー: データベースに接続できません"; 終了; $qry
="SELECT deptno " " ,empno "
Emp
"
,
empnm
"名前" ,salary "給与" FROM
従業員 ORDER BY 1,2";
exequery(
$qry);
ora_logoff
($
conn
); (翻訳者注: 上記のコード スニペットにはコメントがありません。PHP マニュアル の Oracle を参照してください。データベース関数 パート)
4 HTTP ベース Oracle ログイン
PHP ページ コードの前に次のコードを追加して、Oracle を確認します。 ログインします。 $ SID を正しく設定する必要があることに注意してください。
if(!isset($PHP_AUTH_USER))
{
Header("WWW-authenticate: Basic realm="$SID "");
Header("HTTP/1.0 401 Unauthorized");
$title="ログイン手順"
echo "<blockquote>
サイトに入る権限がありません
blockquote> n";
exit;
}
else
{
if (!($conn=ora_logon("$PHP_AUTH_USER@$SID",$PHP_AUTH_PW)))
{
Header("WWW-authenticate: Basic realm="$SID"") );
Header("HTTP/1.0 401 Unauthorized");
$title="ログイン手順"
echo "<blockquote>
あなたは サイトへのアクセスを許可
blockquote> n";
exit;
}
}
?>