2016-10-18 29 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");