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
是''===一個錯字? (在錯誤處理中) – mathguy
@mathguy'==='這是php的語法,用於比較 – RIKI
好吧,明白了。我不知道。 – mathguy