2016-10-18 33 views
0

我已經安裝了PHP和Oracle在Windows 7PHP連接到ORACLE,但無法訪問

然後我用PDO連接到PHP Oracle錶行,像這樣:

$tns = "(DESCRIPTION = 
    (ADDRESS_LIST = 
     (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) 
    ) 
    (CONNECT_DATA = 
     (SERVICE_NAME = oradb) 
    ) 
)"; 

$db_username = "C##OTO_USER"; 
$db_password = "oto_user_pass"; 

try{ 
    $conn = new PDO('oci:dbname='.$tns.';charset=UTF8',$db_username,$db_password); 
}catch(PDOException $e){ 
    echo ($e->getMessage()); 
} 

連接後我嘗試查詢一些表:

$sth = $conn->prepare("SELECT * FROM mytable"); 
$sth->execute(); 
if ($sth->errorInfo()[2] === NULL) { // if no error, print returned result 
    $res = $sth->fetchAll(PDO::FETCH_ASSOC); 
    var_dump($res); 

} 
else { // if some error, print error message 
    echo $sth->errorInfo()[2]; 
} 

奇怪的是,查詢返回空數組,如果在「mytable的」沒有行,但也有行,如果在運行,返回所有行。

而且,如果使錯誤意識,那麼PHP PDO返回錯誤,例如嘗試從非現有表「mytable_bla」選擇,得出:

OCIStmtExecute: ORA-00942: table or view does not exist (ext\pdo_oci\oci_statement.c:148) 

所以,PDO連接到Oracle數據庫,但不看到表中的行時,實際上表中有行。

可能是什麼原因造成的?

編輯

我注意到,PDO沒有看到新創建的錶行,但他認爲改名錶行。

例如RENAME mytable TO mytable2,然後PDO看到行從mytable2

+0

是''===一個錯字? (在錯誤處理中) – mathguy

+0

@mathguy'==='這是php的語法,用於比較 – RIKI

+0

好吧,明白了。我不知道。 – mathguy

回答

0

嘗試將方案名稱連接到你的表名,如下所示:

$sth = $conn->prepare("SELECT * FROM yourSchemeName.mytable");