我试图通过PHP脚本查询远程Oracle数据库。我正在运行WAMP服务器。 Oracle数据库是只读的。我使用PHP脚本连接没有问题,但我在oci_execute命令上遇到错误。
这是我使用的脚本:
<?php
$c = oci_connect("username", "password", "oracle_SID");
if (!$c) {
$e = oci_error();
trigger_error('Could not connect to database: '. $e['message'],E_USER_ERROR);
}
$s = oci_parse($c, 'Select * from fdma.t_title_stage');
if (!$s) {
$e = oci_error($c);
trigger_error('Could not parse statement: '. $e['message'], E_USER_ERROR);
}
$r = oci_execute($s);
if (!$r) {
$e = oci_error($s);
trigger_error('Could not execute statement: '. $e['message'], E_USER_ERROR);
}
oci_free_statement($stid);
oci_close($conn);
?>
这些是我在运行脚本时遇到的错误:
如果数据库是只读的,我应该可以针对它运行select *
查询,对吗?
答案 0 :(得分:0)
Oracle没有将数据库视为“只读”的概念。您正在连接的用户可能没有任何创建/插入/更新/删除权限,这将使数据库对该用户只读,但它是用户的属性,而不是数据库。
您收到的错误与sql语句(... from fdma.t_title_stage
)一起似乎与您在fdma的t_title_stage
表上没有选择权限的用户建立联系。尝试登录fdma
,grant select on t_title_stage to xxx
xxx
是您在oci_connect语句中使用的username
。