2016-02-20 60 views
0

我一直在一個新的項目,需要oracle數據庫和php,即時通訊使用Xampp,我已經下載並安裝了所有必要的配置,但我得到的錯誤已經被證明是忙碌不管我有多少解決方案找到並在線試了,我怎麼解決這個連接php和oracle 11gr2 express

Warning: oci_connect(): ORA-12514: TNS:listener does not currently know of service requested in connect descriptor in C:\xampp\htdocs\Dos\index.php on line 3 

Warning: oci_parse() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Dos\index.php on line 6 

Warning: oci_error() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Dos\index.php on line 8 

Fatal error: in C:\xampp\htdocs\Dos\index.php on line 9 

我的連接代碼

<?php 

$conn = oci_connect('blue','password','localhost/XE'); 

// Prepare the statement 
$stid = oci_parse($conn, 'SELECT * FROM persons'); 
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"; 


?> 

TSNAMES.ORA

XE = 
    (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = JACKSOM.COM)(PORT = 1522)) 
    (CONNECT_DATA = 
     (SERVER = DEDICATED) 
     (SERVICE_NAME = XE) 
    ) 
) 

EXTPROC_CONNECTION_DATA = 
    (DESCRIPTION = 
    (ADDRESS_LIST = 
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) 
    ) 
    (CONNECT_DATA = 
     (SID = PLSExtProc) 
     (PRESENTATION = RO) 
    ) 
) 

ORACLR_CONNECTION_DATA = 
    (DESCRIPTION = 
    (ADDRESS_LIST = 
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) 
    ) 
    (CONNECT_DATA = 
     (SID = CLRExtProc) 
     (PRESENTATION = RO) 
    ) 
) 

LISTENER.ORA

SID_LIST_LISTENER = 
    (SID_LIST = 
    (SID_DESC = 
     (SID_NAME = PLSExtProc) 
     (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server) 
     (PROGRAM = extproc) 
    ) 
    (SID_DESC = 
     (SID_NAME = CLRExtProc) 
     (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server) 
     (PROGRAM = extproc) 
    ) 
) 

LISTENER = 
    (DESCRIPTION_LIST = 
    (DESCRIPTION = 
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) 
     (ADDRESS = (PROTOCOL = TCP)(HOST = JACKSON.COM)(PORT = 1522)) 
    ) 
) 

DEFAULT_SERVICE_LISTENER = (XE) 

SQLNET.ORA

SQLNET.AUTHENTICATION_SERVICES = (NTS) 

我是新來的Oracle我如何能去this..thanks

+0

剛剛'$ conn = oci_connect('blue','password','XE');'? –

+0

即時獲取這些錯誤警告:oci_connect():ORA-12154:TNS:無法解析第3行上C:\ xampp \ htdocs \ Dos \ index.php中指定的連接標識符 致命錯誤:最大執行時間爲30在第3行的C:\ xampp \ htdocs \ Dos \ index.php中超過了秒數 – thequantumtheories

+0

我相當確定tnsnames.ora中'XE'下的'HOST = JACKSOM.COM'應該是'HOST = 127.0.0.1'。 –

回答

0

您的數據庫名好心幫tnsnames.oraXE,而不是localhost/XE,這意味着你的連接線應該是;

$conn = oci_connect('blue','password','XE'); 

此外,在tnsnames.ora,數據庫的主機設置爲JACKSOM.COM,應該可能是127.0.0.1連接到XE localhost上,那就是;

XE = 
(DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1522)) 
    (CONNECT_DATA = 
    (SERVER = DEDICATED) 
    (SERVICE_NAME = XE) 
    ) 
)