-1

所以我让这个项目获取一个以前使用 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_parseoci_fetch_array不正确的。这些是第 15 行和第 17 行 BTW。

再一次,我不知道甲骨文...

4

1 回答 1

1

这与是否了解 Oracle 无关。这与了解 PHP 有关。

PHP 警告:oci_parse() 期望参数 1 是资源,在第 15 行的 /srv/www/htdocs/db/index-woods.php 中给出的字符串

你应该知道这个 PHP 是关于参数类型的警告,并且能够在手册中查找函数参数。

如果您查看oci_parse() 的文档,您会发现第一个参数应该是一个连接资源,您可以从 oci_connect() 获得。还有一个使用 oci_connect() 的代码示例,随后使用 $conn 作为 oci_parse() 的第一个参数。

您日志中的以下错误都是由于对 oci_parse() 的调用不起作用。

始终检查每个 oci_parse() 和 oci_execute() 的返回值,因为如果有任何问题,这些函数会返回false(这也在手册中说明)。在后续调用 oci_fetch_array() 和其他函数时,该false值不能用作查询资源。

在此处查看检查错误的示例:http: //php.net/manual/en/function.oci-error.php

于 2014-01-02T21:11:13.023 回答