[PHP-users 20620]DBからの配列を読めません

inamuran36 @ mahikari.or.jp inamuran36 @ mahikari.or.jp
2004年 3月 2日 (火) 12:01:26 JST


inamuranと申します。よろしくお願いします。
少し長くなりますが、ご了承ください。


 現在、「PHP4.1.2」 「debian3.0woody」 「Mysql3.23.49」「基礎PHP」でPHP
を勉強中です。
少し長くなりますが、ご了承ください。
サンプルプログラムを元に、自分なりに書き換えながら進んできたのですが、自
分で解決ができなくなってしまったのでアドバイスを頂こうと書き込みを決意し
ました。

 内容はセッション関数を使って、データベースの検索条件をあらかじめ指定し
ておいて、表示させるというものです。(smarty、PEAR使用)
ちなみに、この前にログイン画面での認証、トップ画面へのセッション関数を使
った表示等を行っていますが、うまくいっているようです。

-----------------------------------------------------------------------
<?php
require_once("Init_class.php");
 
class Ichiran_class extends Init_class{
    function sub_init(){
        $this->session_check();
    }

   function sub_main(){   
 
    }

    function sub_disp(){
        $this->smarty_obj->assign("t_html_title","一覧表示");
        $this->smarty_obj->assign("t_user",$_SESSION["se_user_name"]);
    $this->smarty_obj->assign("t_code",$_SESSION["se_code_number"]);
        $this->smarty_obj->assign("t_codename",$_SESSION["se_code_name
"]);
        }
    
    function sub_db_disp(){  //表示

         $cc = $_SESSION["se_code_number"];
         $query = "SELECT * FROM buin_table WHERE code LIKE ".$cc."ORDER BY id LIMIT20";
         $db_result = $this->db_object->Query($query);

         while($row = $db_result->fetchRow(DB_FETCHMODE_ASSOC)){   //問題の行
	       $this->smarty_obj->assign("i_bango",$row["bango"]);
	       $this->smarty_obj->assign("i_name",$row["usr_name"]);
	       $this->smarty_obj->assign("i_buy",$row["buy"]);
	       $this->smarty_obj->assign("i_printed",$row["printed"]);
               $this->smarty_obj->display("ichiran.tpl");
         }
      $this->db_object->disconnect();
      }

}

session_start();
$init_obj = new Ichiran_class();
$init_obj->sub_init();
$init_obj->sub_main();
$init_obj->sub_disp();
$init_obj->sub_db_disp();
?>
-----------------------------------------------------------------------

アクセスすると、
-----------------------------------------------------------------------
Fatal error: Call to undefined function: fetchrow() in /var/www/inamuran
/test/ichiran.php on line 28
-----------------------------------------------------------------------
ということで、fetchrow()が未定義って言ってきます。
サンプルでは特に定義しているようなところもなく、(あるのかもしれませんが
分かってない・・・)また、この関数は実際にこのプログラムの元(サンプルプ
ログラム)にも使われているので使えるはずなのに・・・、と、どうにもこうに
もはまってしました。


ちなみに最初はmain()でデータベースから取得してsub_db_disp()で表示し
て・・・と考えていたので、

         $cc = $_SESSION["se_code_number"];
         $query = "SELECT * FROM buin_table WHERE code LIKE ".$cc."ORDER BY id LIMIT20";
         $db_result = $this->db_object->Query($query);

をmain()の中に。代わりに sub_db_disp() の中に global $db_result;をお
いてみたときは、
-------------------------------------------------------------------
Fatal error: Call to a member function on a non-object in /var/www/
inamuran/test/ichiran.php on line 26
-------------------------------------------------------------------
と、$db_resultがオブジェクトじゃないのにオブジェクトとして呼んでいるから
かな???でも、サンプルはこの表現ではできてるのに・・・(但し、サンプル
はユーザ定義関数ではなかったので、自分で global $db_result; をいれて
ます。これが原因かなあ?)。と2日間はまっています。

どうかご助力をお願いいたします。


PHP-users メーリングリストの案内