提问者:小点点

在codeigniter中将数据库结果转换为数组


我是codeigniter的新手,我正在尝试制作一个具有管理员、版主和用户角色的登录身份验证系统。

我的问题是,我试图设置一个条件的'角色'是数据库中的一列。但是我不知道如何使用和比较列角色的价值。

我写了以下代码,但我得到的错误:

[严重性:错误消息:调用数组上的成员函数result_array()]

我的代码是:

<?php
// step no 4 create a new controller where form post after submission.
class verify extends CI_Controller{
     function __construct(){
        parent::__construct();
         $this->load->helper('url');
         $this->load->model('user');
     }
    function login(){
        //step no 5 create a new method in verify controller 
     
       $username = $this->input->post('username');
       $userpass = $this->input->post('password');
       //step 9 take value back in answer variable from model and print message 
      $answer = $this->user->usergetdata($username,$userpass,'admin');   
     $data = $answer->result_array();


        if($answer){
            if($data[0]['role']=='admin'){
              redirect('admin_page');  
            }
            
            
        }else
        {
            echo "username or Password is wrong";
        }
    }
    
}

?>

<!-- begin snippet: js hide: false console: true babel: false -->

共3个答案

匿名用户

在模型中

$res = $this->db->get(); 
return $res->result_array();

然后申请

foreach($answer as $a)
{
  var_dump( $a );
} 

使用$a获取值

匿名用户

$data = json_decode(json_encode($answer),true);
print_r($data);

用这个你的结果转换成数组格式

匿名用户

您正在调用-

要么删除-

调用脚本并使用-

希望这有助于澄清一些事情。

模特

class user extends CI_Model
{ 
  function __construct()
  { 
    parent::__construct(); 
  } 

  function usergetdata( $username,$userpass,$role )
  { 
    $this->db->select(); 
    $this->db->from( 'user' ); 
    $this->db->where( 'username',$username ); 
    $this->db->where( 'userpass',$userpass ); 
    $query= $this->db->get(); 
    if( $query->num_rows() == 1 )
    { 
      return $query; 
    }
    else
    { 
      return false; 
    } 
  } 
}

控制器

$answer = $this->user->usergetdata( $username,$userpass,'admin' );   
$data   = $answer->result_array();