中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在windwos環境中使用php連接oracle數據庫

發布時間:2021-02-08 16:19:58 來源:億速云 閱讀:201 作者:Leah 欄目:開發技術

怎么在windwos環境中使用php連接oracle數據庫?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

要使用php連接oracle,基本條件是
1.需要你安裝了php、
2.安裝了oracle、
3.配置了tnsname.ora。
本地命令行使用sqlplus能夠連接到oracle。

根據你機器的版本選對64bit或者32bit的php程序,我們使用php的oci8擴展連接oracle

安裝好php后,打開oci8擴展,

寫一段連接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'>\n";
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
    print "<tr>\n";
    foreach ($row as $item) {
        print "    <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td>\n";
    }
    print "</tr>\n";
}
print "</table>\n";

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\nginx\Desktop\oraclephpoci\oci.php on line 3

開始以為是沒有選對版本,我是64位的機器,結果說是win32的程序,一看字面提示,我就重新安裝了新的32bit程序還是報錯。

仔細查了查發現在32位像64位遷移的問題,出現如下問題時,我們需要安裝Oracle Instant Client。

復制代碼 代碼如下:


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,它是一個解壓后就能使用的程序,不需要安裝。

下載后把壓縮包解壓到c:\oracleinstantclient,并添加路徑到環境變量PATH

重新執行php ora.php,“%1 不是有效的 Win32 應用程序”的錯誤沒有了,但是會提示

復制代碼 代碼如下:

syntax error, unexpected T_CONSTANT_ENCAPSED_STRING


代碼是從php官網直接拷過來的,代碼中有不可見的字符,使用notepad++查看所有字符,去掉亂碼即可。

繼續執行,這次提示,

復制代碼 代碼如下:


PHP Fatal error: ORA-12154: TNS:could not resolve the connect identifier specified in C:\Users\nginx\Desktop\airline\oci.php on line 6


看樣子是php沒有找到tnsnames.ora的位置,時間比較趕,那我就直接使用ip的形式,具體格式根據你的信息拼寫oci_connect的第三個參數
oracle10格式:[//]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中文亂碼解決辦法,先查詢你的oracle的數據庫編碼使用,

復制代碼 代碼如下:

select userenv('language') from dual;


查出來的結果是SIMPLIFIED CHINESE_CHINA.ZHS16GBK,在php的代碼里設置環境變量

復制代碼 代碼如下:

putenv("NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK");

終于php能夠正確連接到oracle啦。

關于怎么在windwos環境中使用php連接oracle數據庫問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宣化县| 安福县| 麦盖提县| 内江市| 延津县| 即墨市| 武川县| 比如县| 鹤庆县| 卢湾区| 武强县| 虞城县| 西贡区| 桦川县| 宁波市| 平和县| 文成县| 辽阳市| 勃利县| 玛纳斯县| 中西区| 祥云县| 天全县| 淮北市| 江西省| 离岛区| 白玉县| 南靖县| 搜索| 肇东市| 小金县| 波密县| 石楼县| 白玉县| 井研县| 仁布县| 岗巴县| 布尔津县| 焉耆| 黄山市| 湘西|