当我的行中有记录时,为什么codeigniter返回false


why codeigniter return false when I have records on my row?

为什么codeingter在这种情况下返回null null意味着false,因为当我的表上有记录时,表上没有任何记录。我刚开始使用这个框架。我只想显示我的所有用户及其密码和用户类型。顺便说一下,我正在创建一个多用户登录。

class Login extends CI_Controller {
    public function __construct(){
        parent::__construct();
        $this->load->model('User_model');
    }
    public function index(){
            $data['module'] = "Home";
            $this->load->view('header',$data);
            $this->load->view('login');
    }
    public function getAccess(){
        $username = $this->input->post('username');
        $password = $this->input->post('password');
        $array = $this->User_model->login($username,$password);
        echo json_encode($array);
    } 
    public function logout(){
        $this->session->sess_destroy();
        redirect('login');
    }
}

型号

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class User_model extends CI_Model {
    public $variable;
    public function __construct(){
        parent::__construct();
    }
    public function login($username,$password){
        $query = $this->db->query("SELECT iduser,name,last_name,username,password,typeuser_idtypeuser from user INNER JOIN typeuser ON user.typeuser_idtypeuser = typeuser.idtypeuser WHERE username = '$username' AND password = '$password'");
        if($query->num_rows() > 0){
            return $query->result_array();
        }else{
            return false;
        }
    }
}

修改模型:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class User_model extends CI_Model {
    public $variable;
    public function __construct(){
        parent::__construct();
    }
    public function login($username,$password){
        $query = "SELECT iduser,name,last_name,username,password,typeuser_idtypeuser from user INNER JOIN typeuser ON user.typeuser_idtypeuser = typeuser.idtypeuser WHERE username = ? AND password = ? LIMIT 1";
        $query = $this->db->query($query,array($username,$password));
        if($query->num_rows() != 0){
            return $query->result_array();
        }else{
            return false;
        }
    }
}

在您的控制器中,在回波之前验证变量$array:

public function getAccess(){
        $username = $this->input->post('username');
        $password = $this->input->post('password');
        if($array = $this->User_model->login($username,$password)) {
        echo json_encode($array);
        } else { echo 'NO DATA!'; }
    } 

像这样编辑模型。

// it is using Codeigniter Query Builder
public function login($username, $password)
{
    $this->db->select('iduser, name, last_name, username, password, typeuser_idtypeuser');
    $this->db->from('user');
    $this->db->join('typeuser', 'typeuser.idtypeuser = user.typeuser_idtypeuser');
    $this->db->where('user.username', $username);
    $this->db->where('user.password', $password);
    $result = $this->db->get();
    if( $result->num_rows() > 0 ) {
        return $result; 
    } else {
        return false;
    }
}

在控制器中,您可以像这样显示

public function getAccess()
{
    $username = $this->input->post('username');
    $password = $this->input->post('password');
    $array = $this->User_model->login($username, $password);
    // Dispaly Like this 
    foreach ($array->result() as $row) {
        echo $row->iduser; echo " / ";
        echo $row->name; echo " / "; 
        echo $row->last_name; echo " / ";
        echo $row->username; echo " / ";
        echo $row->password; echo " / ";
        echo $row->typeuser_idtypeuser;
        echo "<br><br>";
    }
}

请记住,如果您输入的用户名或密码在数据库中不存在,您仍然会收到false。

显示所有用户模型应该是这样的。

public function get_all_login()
{
    $this->db->select('iduser, name, last_name, username, password, typeuser_idtypeuser');
    $this->db->from('user');
    $this->db->join('typeuser', 'typeuser.idtypeuser = user.typeuser_idtypeuser');
    $result = $this->db->get();
    if( $result->num_rows() > 0 ) {
        return $result; 
    } else {
        return false;
    }
}

在控制器中,显示将是相同的

public function get_all_Access()
{
    $array = $this->User_model->get_all_login();
    // Dispaly Like this 
    foreach ($array->result() as $row) {
        echo $row->iduser; echo " / ";
        echo $row->name; echo " / "; 
        echo $row->last_name; echo " / ";
        echo $row->username; echo " / ";
        echo $row->password; echo " / ";
        echo $row->typeuser_idtypeuser;
        echo "<br><br>";
    }
}

有关Codeigniter查询生成器类的更多信息,https://www.codeigniter.com/userguide3/database/query_builder.html