繁体   English   中英

PHP已连接到ORACLE,但无法访问表行

[英]PHP connected to ORACLE, but can't access table rows

我已经在Windows 7上安装了PHP和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”中没有行,尽管有行,如果在SQL DEVELOPER运行SELECT * FROM mytable ,则会返回所有行。

另外,如果有意识地使错误发生,则PHP PDO返回错误,例如,尝试从不存在的表“ mytable_bla”中进行选择,得到:

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

因此,PDO连接到ORACLE DB,但实际上表中有行时看不到表中的行。

这可能是什么原因造成的?

编辑

我注意到PDO没有看到新创建的表行,但是看到了重命名的表行。

例如RENAME mytable TO mytable2 ,然后PDO看到mytable2

尝试将方案名称附加到您的表名称,如下所示:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM