winddwosでphpを使ってoracleデータベースに接続する過程を共有します。

4047 ワード

phpを使ってoracleを接続するには、基本的な条件は1です。php、2をインストールしてください。oracle、3をインストールしました。tnsname.oraを配置しました。ローカルコマンドラインはsqlplusを使ってoracleに接続できます。
あなたのマシンのバージョンによって64 bitまたは32 bitのphpプログラムを選択して、私達はphpのoci 8拡張を使ってoracleを接続します。
phpを取り付けたら、oci 8を開けて広げます。
一節の接続oracleのora.phpコードを書く

<?php

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

// Prepare the statement
$stid = oci_parse($conn, 'SELECT * FROM departments');
if (!$stid) {
    $e = oci_error($conn);
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

// Perform the logic of the query
$r = oci_execute($stid);
if (!$r) {
    $e = oci_error($stid);
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

// Fetch the results of the query
print "<table border='1'>
";
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
    print "<tr>
";
    foreach ($row as $item) {
        print "    <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td>
";
    }
    print "</tr>
";
}
print "</table>
";

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

?>

説明:oci_connect('hr'、'welcome'、'MYDB')の一番目のパラメータはoracleのユーザ名で、二つ目のパラメータはoracleのパスワードの三つ目のパラメータはtnsnames.oraの連接シリアル名です。
コマンドライン実行
php ora.php
ヒント以下のエラー

PHP Warning: PHP Startup: Unable to load dynamic library 'C:\php\php_oci8.dll'- %1 Win32 。 in Unknown on line 0
PHP Parse error: syntax error, unexpected '"user"' (T_CONSTANT_ENCAPSED_STRING) in C:\Users
ginx\Desktop\oraclephpoci\oci.php on line 3
最初は正しいバージョンが選択されていないと思いましたが、64ビットのマシンです。結果としてwin 32のプログラムです。字面を見て、新しい32 bitプログラムをインストールしました。それともエラーが発生しましたか?
32ビットの像64ビットの移動の問題を詳しく調べたら、次のような問題が発生した場合、Oracle Instant Cientをインストールする必要があります。

Unable to load dynamic library 'C:\Program Files (x86)\PHP\ext\php_oci8_11g.dll' - %1 is not a valid Win32 application.
Warning oci_connect(): OCIEnvNlsCreate() failed. There is something wrong with your system - please check that PATH includes the directory with Oracle Instant Client libraries
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は有効ではないWin 32アプリケーション」のエラーはなくなりました。しかし、コードはphp公式サイトから直接拷問されました。コードの中には見えない文字があります。notepad++を使ってすべての文字を調べて、文字化けを取ればいいです。
続けて実行します。今回のヒントは、phpがtnsnames.oraの位置を見つけていないようです。時間があまりないので、直接ipの形式を使って、具体的なフォーマットはあなたの情報に基づいて、oci_をつづります。connectの3番目のパラメータoracle 10フォーマット:[/]host_name[:port][/service_]name]oracle 11フォーマット:[/]host_name[:port][/service_]name[:server_]type[/instance_]name..私が具体的に使っているphp oci接続列は:
syntax error, unexpected T_CONSTANT_ENCAPSED_STRING
上記の情報を合わせてやっと結果が出ましたが、検索結果に文字化けが問題になりました。
php oci 8中国語の文字化けの解決方法は、まずあなたのoracleのデータベースコードを調べて使用します。

PHP Fatal error: ORA-12154: TNS:could not resolve the connect identifier specified in C:\Users
ginx\Desktop\airline\oci.php on line 6
で調べた結果、SIM PLIFIED CHINESE_です。CHINA.ZHS 16 GBKは、phpのコードに環境変数
$conn = oci_connect('hr', 'welcome', '//www.jb51.net:1523/sycx');
を設定します。
やっとphpがoracleに正しく接続できました。