kfrico 发表于 2008-11-5 16:46:38

JOIN用法有錯嗎

function select_pmacm($data)
    {
      
    $PersonID = $data->PersonID;   
      
    $this->load->database();
    $this->db->select('*');
    $this->db->where('PersonMaster.PersonID =',$PersonID);
    $this->db->from('PersonMaster');
    $this->db->join('AssocChairMan', 'AssocChairMan.PersonID = PersonMaster.PersonID ');   
    $query = $this->db->get();
    return $query;
   
    }

為什麼都Fatal error: Call to a member function result() on a non-object in

是少了什麼雙引號或是單引號嗎?

kissmumu 发表于 2008-11-5 17:08:57

你查寻的结果是单条条数据,因为你用了where("id",$id);
所以,你的结果只能用$query->row()返回对象,或是用$query->row_array()返回数组。
你用了result()所以错了。
如果返回的结果是多条数据,如你的例子中,把where那行代码去掉,就是用$query->result()再用foreach循环输出
:)

kfrico 发表于 2008-11-5 18:26:37

用了result()什麼意思有點不太點懂可以打段程式告訴我那裡錯了嗎

kfrico 发表于 2008-11-6 00:28:43

我在Controllers這樣寫
$this->load->model('modelacm');
    $query['data'] = $this->modelacm->select_acm($data);   
    $this->load->view('view_acmdata',$query);
    $this->login_acm();

在Model
function select_acm($data)
    {
    $PersonID = $data->;PersonID;   
    $Status = $data->Status;                              
    $AssocChairType = $data->AssocChairType;            
    $AssocChairManID = $data->AssocChairManID ;      
                  
    $this->load->database();
    $this->db->select('*');      
    $this->db->where('"AssocChairMan"."PersonID" = ',$PersonID);
    $this->db->or_where('"AssocChairMan"."Status" = ',$Status);
    $this->db->or_where('"AssocChairMan"."AssocChairType" = ',$AssocChairType);
    $this->db->or_where('"AssocChairMan"."AssocChairManID" = ',$AssocChairManID);
    $this->db->from('AssocChairMan');
    $this->db->join("AssocChairMan", "AssocChairMan.PersonID = PersonMaster.PersonID");      
    $query = $this->db->get();
      return $query;
   
    }

在view
foreach($data->result() as $row){
    echo '<TD align=left>';
    echo$row->;PersonID;
    echo'</TD>';
    echo '<TD align=left>';
    echo$row->ChineseName;
    echo'</TD>';
    echo '<TD align=left>';
    echo$row->Sex;
    echo'</TD>';
    echo '<TD align=left>';
    echo$row->Status;
    echo'</TD>';
}


不過還是出現錯誤!

是在view的foreach($data->result() as $row)這一段

是那裡出了錯!!

我不太懂妳說的意思

[ 本帖最后由 kfrico 于 2008-11-6 00:30 编辑 ]

kissmumu 发表于 2008-11-6 08:59:24


在view的foreach($data->result() as $row)這一段
改为:
foreach($data->row() as $row)

原因,$data->result()是在抓到多个record时用的
但是,你的只是抓1条record,所以用$data->row()
Good luck

kfrico 发表于 2008-11-6 12:10:24

Call to a member function row() on a non-object in
照你說的改成foreach($data->row() as $row)
還是一樣錯誤
怎麼會這樣!
困擾好幾天了都找不出原因!

gwpxjb 发表于 2008-11-6 13:13:23

你可以将sql执行结果打出来看看,是个什么类型,再输出

kfrico 发表于 2008-11-6 13:18:09

什麼意思?該怎麼打?

kissmumu 发表于 2008-11-6 14:09:46

$this->db->where('"AssocChairMan"."PersonID" = ',$PersonID);
如果你的PersonID是prime key,那么你抓到的record只有一条,那么用
$row = $data->row();
echo$row->PersonID;
就用不到foreach巡回了

如果不是主键,确实可能返回多条记录的话要用foreach($data->result() AS $row)...

你也可以用var_dump($data);看看$data到底返回的是什么

kfrico 发表于 2008-11-6 14:19:19

PersonID是prime key是沒錯但是我在它為空值時or_where其他的條件
確實可能返回多條記錄
它反迴bool(false)
是那裡出了錯?
页: [1] 2
查看完整版本: JOIN用法有錯嗎