-1

そこで、以前は MySQL を使用していて、現在は Oracle を使用しているページをこのプロジェクトに取り込んでもらいました。そこで、oci8 PHP モジュールをインストールし、変更を加えるためのテスト ページを作成しました。これは私が更新しているページであり、私はオラクルの専門家ではありません。私は 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

最後の 2 つのエラーは、最初の 2 つに関連しています。これらのエラーに基づくと、oci_parseoci_fetch_arrayは正しくないようです。これらは15行目と17行目です。

繰り返しますが、私はオラクルを知りません...

4

1 に答える 1

1

これは、オラクルを知っているかどうかとは関係ありません。これは、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(これはマニュアルにも記載されています)。このfalse値は、後続の oci_fetch_array() およびその他の関数の呼び出しでクエリ リソースとして使用できません。

ここでエラーをチェックする例を参照してください: http://php.net/manual/en/function.oci-error.php

于 2014-01-02T21:11:13.023 に答える