2012-11-15 168 views
3

我想通過控制器類中的函數傳遞一個數組,並從模型中的類中的另一個函數中檢索它,但無法檢索這些值。請指教。將數組從控制器傳遞到codeigniter中的模型

代碼如下。

控制器類代碼

class home extends CI_Controller { 

function __construct() { 
    parent::__construct(); 
    $this->load->helper('url'); 
} 

function index() { 
    $this->load->view('loginview'); 
} 

function login() { 
    $parameters = array(
     '$uname' => $this->input->post('uname'), 
     '$passwords' => $this->input->post('password') 
    ); 

    $this->load->model('loginModel'); 
    $validate = $this->loginModel->validateuser($parameters); 

    if(count($validate)== 1){ 
     echo "Logged in"; 
    } 
    else 
    { 
     //redirect('home/index'); 
     echo "dasad"; 
    } 


} 

}

Model類代碼

class loginModel extends CI_Model { 

function __construct() { 
    parent::__construct(); 
} 

public function validateuser($parameters) { 

     $uname = $parameters['uname']; 
     $pass = sha1($mem['pass']); 



    $query = $this->db->query("select * from user where username = '$uname' and password = '$pass'"); 
    $result = $query->result_array(); 
    return $result; 

} 

}

變量$ UNAME和$通是需要去兩個值查詢數據庫。請幫忙

+0

的可能的複製[傳遞來自控制器的陣列笨模型(https://stackoverflow.com/questions/14049554/pass-an-array-from-controller-to-model-in-codeigniter) –

回答

1

你的代碼有錯誤。控制器登錄的正確1()方法:

function login() { 

    // you don't need '$' sign 
    $parameters = array(
     'name' => $this->input->post('uname'), 
     'pass' => $this->input->post('password') 
    ); 

    $this->load->model('loginModel'); 
    $validate = $this->loginModel->validateuser($parameters); 

    // stuff.. 

} 

和模型loginModel()方法:

public function validateuser($parameters) { 

    $uname = $parameters['name']; 
    $pass = sha1($parameters['pass']); // and second error was here 

    // stuff.. 

} 
+0

owh .... ya非常感謝我在控制器中使用了$數組鍵,這是最大的問題,再次感謝... – Orin12

0

你的數組鍵字符串是在模型和控制器類不同。這裏是可能的修復。

在控制器使用:

$parameters = array(
     'uname' => $this->input->post('uname'), 
     'passwords' => $this->input->post('password') 
    ); 

其次在你的模型。使用它來獲取參數。

$uname = $parameters['uname']; 
    $pass = sha1($parameters['passwords']); 

希望它有幫助。

+0

這與變量傳遞的方式無關。 –

+0

是的,在陣列鍵中使用$是最大的問題,它是nt匹配,以及非常感謝幫助.... – Orin12

+0

謝謝。你可以標記它是否有幫助。 –

0

我看到你的答案已經修復,但我只是想給你一個替代方案。它更安全和短:

控制器:

function login() { 

    $this->load->model('loginModel'); 
    $validate = $this->loginModel->validateuser(); 

    if($validate){ 
     echo "Valid User"; 
    } else{ 
     echo "Invalid User"; 
    } 
} 

型號:

public function validateuser() { 

$query = $this->db->query("select * from user where username = ? and password = ?",array($this->input->post('uname'),sha1($this->input->post('password')))); 
    if($query->num_rows() == 1){ 
     return true; 
    }else{ 
    return false; 
    } 

} 
+0

是的,它被解決了。看起來你的方法比我所做的更好......非常感謝你的建議。 – Orin12

相關問題