【发布时间】:2014-01-20 10:12:26
【问题描述】:
所以我让这个项目获取以前使用 MySQL 和现在使用 Oracle 的页面。所以我安装了 oci8 PHP 模块并创建了一个测试页面来进行更改。这是我正在更新的页面,我不是 Oracle 人员。我是 MySQL/PostgreSQL 人。
反正有这些原始参数:
$webIndex = mysql_db_query('main', 'SELECT * FROM links2');
while ($garbage = mysql_fetch_array($webIndex)) {
$descriptions = $garbage['descr'];
$urls = $garbage['url'];
print "<a href=\"$urls\">$descriptions</a><br />";
$i++;
}
所以我将这些行替换为:
$webIndex = oci_parse('main', 'SELECT * FROM links2');
while ($garbage = oci_fetch_array($webIndex)) {
$descriptions = $garbage['descr'];
$urls = $garbage['url'];
print "<a href=\"$urls\">$descriptions</a><br />";
$i++;
}
执行此操作后,跟踪 -f apache 错误日志并得到:
[Thu Jan 02 14:41:24 2014] [error] [client 10.10.102.75] PHP Warning: oci_parse() expects parameter 1 to be resource, string given in /srv/www/htdocs/db/index-woods.php on line 15
[Thu Jan 02 14:41:24 2014] [error] [client 10.10.102.75] PHP Warning: oci_fetch_array() expects parameter 1 to be resource, null given in /srv/www/htdocs/db/index-woods.php on line 17
[Thu Jan 02 14:41:24 2014] [error] [client 10.10.102.75] PHP Notice: Undefined variable: pageText2 in /srv/www/htdocs/db/index-woods.php on line 105
[Thu Jan 02 14:41:24 2014] [error] [client 10.10.102.75] PHP Notice: Undefined variable: pageText3 in /srv/www/htdocs/db/index-woods.php on line 106
最后两个错误与前两个有关。基于这些错误,oci_parse 和 oci_fetch_array 似乎不正确。顺便说一句,这些是第 15 和 17 行。
再一次,我不知道甲骨文...
【问题讨论】:
-
以the docs on
oci_parse()开头第一个参数是连接链接资源,不是字符串。mysql_db_query()是一个旧的不推荐使用的函数,它在oci_*()下没有直接替代品 -
这不是关于 Oracle,而是关于您对 PHP 函数的使用。阅读错误消息并更正对您正在执行的函数的调用。
-
oci_parse()文档提供了有关如何准备、执行和获取行的示例。它与您的旧代码有些不同。 -
由于您正在重写代码,与旧的
oci_*()扩展相比,在 Oracle 中使用更便携的PDO可能会更好。
标签: php mysql oracle suse oci8