ホームページ  >  記事  >  バックエンド開発  >  Windows_PHP チュートリアルで PHP を使用して Oracle データベースに接続するプロセスを共有する

Windows_PHP チュートリアルで PHP を使用して Oracle データベースに接続するプロセスを共有する

WBOY
WBOYオリジナル
2016-07-13 10:29:24873ブラウズ

PHP を使用して oracle に接続するには、
1. PHP をインストールする、
2. oracle をインストールする、
3. tnsname.ora を設定する必要があります。
ローカルコマンドラインはsqlplusを使用してOracleに接続できます。

マシンのバージョンに応じて 64 ビットまたは 32 ビットの php プログラムを選択します。oracle への接続には php の oci8 拡張機能を使用します。

phpをインストールした後、oci8拡張機能を開きます

Oracle に接続する ora.php コードを記述します


コードをコピーします コードは次のとおりです:

$conn = oci_connect('hr', 'welcome', 'MYDB');

if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES) 、E_USER_ERROR);
}

// ステートメントを準備します

$stid = oci_parse($conn, 'SELECT * FROM Companies');
if (!$stid) {
$e = oci_error($conn);
trigger_error(htmlentities($e['メッセージ']、ENT_QUOTES)、E_USER_ERROR);
}

// クエリのロジックを実行します

$r = oci_execute($stid);
if (!$r) {
$e = oci_error($stid);
trigger_error(htmlentities($e['message'], ENT_QUOTES)、E_USER_ERROR);
}

// クエリの結果を取得します

print "

n";
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
print "n "; O Foreach ($ row as $ it) {
Print" & lt; gt; ". ($ It! == NULL? HtmLentities ($ it, ent_quotes):" & Lt;/td; & gt; n ";
}
print "n";
}
print "
n";

oci_free_statement($stid);oci_close($conn);


?>


手順: oci_connect('hr', 'welcome', 'MYDB')

最初のパラメータはoracleのユーザー名です。
2番目のパラメータはoracleのパスワードです
3番目のパラメータはtnsnames.oraの接続です 文字列名

コマンドラインから実行


コードをコピー コードは次のとおりです:php ora.php
次のエラーが表示されます


コードをコピーします コードは次のとおりです:
PHP 警告: PHP 起動: ダイナミック ライブラリ 'C:phpphp_oci8.dll' をロードできません - %1 は有効な Win32 ではありません応用。 0 行目で不明
PHP 解析エラー: 構文エラー、予期しない '"user"' (T_CONSTANT_ENCAPSED_STRING) 3 行目で C:UsersnginxDesktoporaclephpocioci.php

最初は、64 ビット マシンを使用しているため、正しいバージョンを選択しなかったためだと思いましたが、テキスト プロンプトを見たときに、それが win32 プログラムであることがわかり、新しい 32 ビットを再インストールしました。プログラムを実行してもまだエラーが発生します。

慎重に調査した結果、32 ビットから 64 ビットへの移行で問題が発生したことがわかりました。次の問題が発生した場合は、Oracle Instant Client をインストールする必要があります。


コードをコピー コードは次のとおりです:
ダイナミック ライブラリ 'C:Program Files (x86)PHPextphp_oci8_11g.dll' をロードできません - %1 は有効な Win32 アプリケーションではありません。
警告 oci_connect(): OCIEnvNlsCreate() が失敗しました。システムに問題があります - PATH に Oracle Instant Client ライブラリのあるディレクトリが含まれていることを確認してください


Oracle Instant Client は、解凍後に使用できるプログラムであり、インストールは必要ありません。
Oracle アカウントをお持ちの場合は、Oracle にアクセスして対応するバージョンをダウンロードできます (ユーザーの登録には多くの情報が必要です)

http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

面倒な学生の方はこちらのアドレスからダウンロードしてください

http://eduunix.ccut.edu.cn/index2/database/Oracle%20Instant%20Client/

ダウンロード後、圧縮パッケージをc:oracleinstantclientに解凍し、環境変数PATHにパスを追加します

php ora.php を再実行すると、「%1 は有効な Win32 アプリケーションではありません」というエラーは消えますが、プロンプトが表示されます


コードをコピーします コードは次のとおりです: 構文エラー、予期しない T_CONSTANT_ENCAPSED_STRING
コードはphpからのものです。コード内に見えない文字がありますので、notepad++を使用してすべての文字を表示し、文字化けを削除してください。

実行を続行します。今度はプロンプトが表示されます。


コードをコピーします コードは次のとおりです:
PHP 致命的エラー: ORA-12154: TNS: C:UsersnginxDesktopairlineoci.php で指定された接続識別子を解決できませんでした6号線

php が tnsnames.ora の場所を見つけられないようで、時間が迫っているので、具体的な形式はあなたの情報に基づいて、
oracle10 形式の 3 番目のパラメータを記述します。 [//]host_name[: port][/service_name]
oracle11 形式: [//]host_name[:port][/service_name][:server_type][/instance_name]。
私が使用する具体的な php oci 接続文字列は次のとおりです。
コードをコピー コードは次のとおりです:
$conn = oci_connect('hr', 'welcome', '//www.jb51.net:1523/sycx');

上記の情報を設定した後、最終的に結果が得られましたが、結果に文字化けが含まれていることがわかりました。この問題は基本的にエンコードの不一致によって引き起こされます。

php oci8 中国語文字化けの解決策、まずオラクルのデータベースエンコーディングを確認し、

コードをコピーします コードは次のとおりです:
select userenv(' language') from Dual;

結果は SIMPLIFIED CHINESE_CHINA です.ZHS16GBK、PHPコードに環境変数を設定します
コードをコピーします コードは次のとおりです:
putenv("NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK");

ついにphpがoracleに正しく接続できるようになりました。

www.bkjia.com本当http://www.bkjia.com/PHPjc/776762.html技術記事 PHP を使用して Oracle に接続するには、基本条件は次のとおりです。1. PHP をインストールする、2. Oracle をインストールする、3. tnsname.ora を構成する。 ローカル コマンド ラインは、sqlplus を使用して oracle に接続します。 あなたのマシンによると...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。