• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHP4の Warning: pg_freeresult(): supplied argument ・・・というエラー)

PHP4のエラー:pg_freeresult(): supplied argument は何のエラー?

このQ&Aのポイント
  • PHP4のエラー: pg_freeresult(): supplied argument is not a valid PostgreSQL result resource in /home/user/public_html/postgres/sur1.phtml on line 53。
  • 同じような状態で放置してあるのもいくつか見つかりました。
  • これの原因は何でしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • duckling
  • ベストアンサー率47% (88/185)
回答No.1

sur1.phtml に関してだけですが、 pg_execにより実行されたSQLの結果がEmpty(0行)だったために、 $resultをpg_freeresult仕様とした時にエラーが出ているのだと思います。 35行目: // 実行したQueryのErrorを確認します。 if (!$result) { ≪ここに pg_freeresult≫ で、else の際には要らないと思いますよ。

abcxyz3000
質問者

補足

> 35行目: > // 実行したQueryのErrorを確認します。 > if (!$result) { > ≪ここに pg_freeresult≫ とりあえず、移動させました。で、最初のエラーはなくなったのですが、 「入れ忘れた項目があります。」のエラーが消えません。次の部分が出していると思うのですが値は全部入れています。 これは何が原因でしょうか?      // 入力された項目に値が入っているかを確認します。      if (!$name || !$furigana || !$mail || !$zip || !$addr || !$tel ||       !$list) {        echo "<CENTER>";        echo "<H2>入れ忘れた項目があります。          「戻る」ボタンで戻ってください。</H2>";        echo "</CENTER>";

その他の回答 (1)

  • duckling
  • ベストアンサー率47% (88/185)
回答No.2

そういう時には、 本当に入れ忘れていないかどうかを テスト出力してみましょう。 // 入力された項目に値が入っているかを確認します。 if (!$name || !$furigana || !$mail || !$zip || !$addr || !$tel || !$list) { echo "<CENTER>"; echo "<H2>入れ忘れた項目があります。「戻る」ボタンで戻ってください。</H2>"; echo "</CENTER>"; print ' $name「'.$name.'」<br> $furigana「'.$furigana.'」<br> $mail「'.$mail.'」<br> $zip「'.$zip.'」<br> $addr「'.$addr.'」<br> $tel「'.$tel.'」<br> $list「'.$list.'」<br>'; } ちなみに !$name のように、 ビックリマークで判別する場合は、0 (ゼロ)にも反応します。 つまり、 0 という値が $name に入っていた場合も 入れ忘れた項目として扱われてしまうのです。 本当に空欄だけを弾きたいのであれば、 $name == "" などに変更しましょう。 $list辺りが怪しいかな?

abcxyz3000
質問者

お礼

次のような解説があり、 $name 等は使えなくなったようです。 PHPバージョン4.1.xまでと4.2以降ではこの設定の既定値が異なっている。変更された理由は4.1.xまでの設定ではセキュリティ上の問題があったため。ところがこの変更の影響で、PHPバージョン4.1.xまでを対象に作られたプログラムが、かなり簡単なサンプルでさえもPHPバージョン4.2以降で動かないということが多発しており、いわゆる「register_globals問題」として知られている。 http://d.hatena.ne.jp/ryuzi_kambe/keyword/register_globals?kid=5984

abcxyz3000
質問者

補足

チェック用コードを入れてみたところ、全部、空でした。  入れ忘れた項目があります。 「戻る」ボタンで戻ってください。  $name「」  $furigana「」  $mail「」  $zip「」  $addr「」  $tel「」  $list「」 それで、次のように書き換えたのですが、それでも、結果は同じでした。  if ($name=="" || $furigana=="" || $mail=="" || $zip=="" || $addr=="" || $tel=="" || $list=="") もっと、別の基本的な部分がおかしいのでしょうか?