为什么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