2012-08-14 60 views
2

我已經搜索了地球的盡頭,回到了這個解決方案,對於其他人來說,修正是在autoload.php中自動加載數據庫類。但是,我已經這樣做了,所以我不知道還有什麼可以配合的。codeigniter調用一個非對象的成員函數row()

控制器:

class Login extends CI_Controller{ 

function validate_credentials(){ 
    $this->load->model('membership_model'); 

    // call the member function from membership_model.php 
    $q = $this->membership_model->validate(); 

    if($q){ 
     // user info is valid 
     $data = array(
      'username' => $this->input->post('username'), 
      'is_logged_in' => true 
     ); 

     $this->session->set_userdata($data); 
     redirect('site/members_area'); 

    }else{ 
     $this->index(); 
    } 

    } 
} 

型號:

class Membership_model extends CI_Model{ 

function validate(){ 
    // this method is called from the login.php controller 
    $this->db->where('username', $this->input->post('username')); 
    $this->db->where('password', md5($this->input->post('password'))); 
    $q = $this->db->get('members'); 


    if($q->num_rows == 1){ 

     return true; 
    } 

    return false; 
    } 
} 

這個請,我轉圈圈本

我的下一個想法任何幫助是php.ini的需求在我的主機服務器上配置,以加載mysql模塊 - 但我會非常驚訝呢?

只是爲了澄清 - 行:

if($q->num_rows) 

的問題,說我想引用一個非對象

回答

1

NUM_ROWS的屬性是一個功能。

if ($query->num_rows() > 0) { 

} 

所以你需要

if($q->num_rows() > 0) { 
    return true; 
} 
2

其實

if($q->num_rows) 

應該

if($q->num_rows()) // It returns the number of rows returned by the query. 

所以,你可以使用

if($q->num_rows()) // In this case it'll be evaluated true if rows grater than 0 
{ 
    // code when rows returned 
} 
+0

謝謝。我改變了這一點,但我仍然得到: 致命錯誤:調用第18行中的/home/classify/public_html/songbin/application/models/membership_model.php中的非對象的成員函數num_rows() If我編輯database.php爲 $ db ['default'] ['dbdriver'] ='mysqli'; 而不是 $ db ['default'] ['dbdriver'] ='mysql'; 錯誤消息消失,但查詢仍然無法返回任何內容。數據庫信息肯定存在。 因此,我有另一個插入數據到數據庫的功能,它也無法實際插入 – Alex 2012-08-14 09:49:10

0

解決 - 我還沒有分配用戶到數據庫,因此無法訪問它。

救濟

相關問題