データベースに接続する

WBOY
リリース: 2016-06-13 12:37:24
オリジナル
1153 人が閲覧しました

4. データベース接続
PHP を使用すると、データベースに簡単に接続し、データをリクエストして Web サイトに表示したり、データベース内のデータを変更したりすることもできます。 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。

4.1 接続

if ($conn=Ora_Logon("user@TNSNAME","password"))
{
echo "n";
}
else
{
echo "失敗:-( データベースnに接続できませんでした";
}
Ora_Logoff($conn);
phpinfo();
?>
上記のコードは、TNSNAME (tnsnames.ora ファイルで指定) で定義された Oracle データベース名とユーザー名を使用します。成功した接続に基づいて、ora_logon 関数はゼロ以外の接続 ID を返し、変数 $conn に格納します。4.2 クエリ

とします。データベースへの接続の準備ができていることを確認します。次に、データベースをクエリする実際のアプリケーションに進みます。次のコードは、接続とクエリの典型的な例を示しています。
/*
* データベースに接続し、クエリを実行します
*/
function printoraerr($in_cur)
{
// Oracle にエラーがあるかどうかを確認します
// エラーがある場合は表示します
// ポインタがアクティブ化されている場合、Oracle に対する各リクエストの後にこの関数を呼び出します
if (ora_errorcode($in_cur))
echo "Oracle コード - ".ora_error($in_cur)."n";
return;
}
/**メインプログラム*/
if (!($conn=ora_logon ("user@TNSNAME","password")))
{
echo "データベースへの接続に失敗しました";
終了;
}
echo "接続として接続されました - $conn
n";
echo "カーソルを開きます...
n";
$cursor=ora_open($conn); printoraerr($cursor);
echo "開いたカーソル - $cursor
n";
$qry="デュアルからユーザー、sysdate を選択";
echo "クエリを解析しています $qry ...
n";
ora_parse($cursor,$qry,0);
echo "クエリparsed
n";
echo "カーソルを実行しています...
n";
ora_exec($cursor); printoraerr($cursor);
echo "カーソルを実行しています
n";
echo " カーソルを取得しています ...
n";
while(ora_fetch($cursor))
{
$user=ora_getcolumn($cursor,0); printoraerr ($cursor);
$sysdate=ora_getcolumn($cursor,1); printoraerr($cursor);
echo " row = $user, $sysdate
n";
}
echo "すべてのレコードを取得しました
n";
echo "カーソルを閉じています...
n";
ora_close($cursor);
echo "カーソルを閉じました
n ";
echo "Oracle からログオフしています...
n";
ora_logoff($conn);
echo "Oracle からログオフしました? >
(翻訳者注: 上記のコードセグメントにはコメントがありません。PHP マニュアルの Oracle データベース関数のセクションを参照してください)

4.3 結果の表示

次のコードは、データベースにクエリを実行して結果を出力する方法を示しています:
function printoraerr($in_cur, $conn)
{
// Oracle にエラーがあるかどうかを確認します
// エラーがある場合は、それを表示します
// この関数は、ポインタがアクティブ化されるときに Oracle リクエストごとに呼び出されます
// エラーが発生した場合は、すぐに終了します
if(ora_errorcode ($in_cur))
{
echo "Oracle コード - ".ora_error($in_cur)."
n";
ora_logoff($conn);
終了;
}
return;
}

関数 exequery($w_qry,$conn)
{
$cursor=ora_open($conn);
ora_parse($cursor,$w_qry,0); printoraerr($cursor,$conn);
ora_exec($cursor);
$numrows=0;
$w_numcols=ora_numcols($cursor);
// ヘッドを表示
echo "


n";
for ($i=0;$i{
$align=(ora_columntype($cursor,$i) =="NUMBER")?"RIGHT":"LEFT";
echo "t
n" ;
}
echo "
n ";
while(ora_fetch($cursor))
{
echo "
n";
for ( $i=0;$i<$w_numcols;$i )
{
$align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT":"LEFT";
if(ora_columntype($cursor,$i)=="LONG" )
echo "
n";
else
echo "
n";
}
if ($ numrows==0)
echo "
else
{
echo "
n";
echo "
n";
echo "
n";
echo "
n";
}
echo "
".ora_columnname($cursor,$i)."
".<br>ora_getcolumn($cursor,$i) ."
".ora_getcolumn($cursor,$i)."n";
printoraerr($cursor,$conn) ;
}
$numrows ;
echo "
クエリはレコードを返しませんでした
Count$numrows
n";
ora_close($cursor );
return;
}

// メインプログラム
if(!($conn=ora_logon(" user@SID","password")))
{
echo "エラー: データベースに接続できません";
終了;
}
$qry="SELECT
deptno "部門"
,empno "従業員"
,empnm "名前"
,salary "給与"
FROM
従業員
ORDER BY 1,2";
exequery($qry);
ora_logoff($conn);
?>
(翻訳者注: 上記のコード スニペットにはコメントがありません。PHP を参照してください。手動 Oracle データベース機能部分)

4.4 HTTP ベースの Oracle ログイン

Oracle ログインを確認するために、PHP ページのコードの前に次のコードを追加します。 $SID を正しく設定する必要があることに注意してください。
if(!isset($PHP_AUTH_USER))
{
Header("WWW-authenticate: Basic realm="$SID"");
Header("HTTP/ 1.0 401 Unauthorized");
$title="ログイン手順";
echo "

サイトに入る権限がありません
>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 "

サイトに入る権限がありません
n";
exit;
}
}
?>

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート