【问题标题】:converting database result into array in codeigniter在codeigniter中将数据库结果转换为数组
【发布时间】:2016-10-13 13:13:41
【问题描述】:

我是 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 -->

【问题讨论】:

  • 我们可以看看你的用户模型吗?
  • 你能告诉我们你的用户获取数据方法是什么吗?理想情况下,您希望有一个模型方法,它只返回一个说 login_status 和角色的数组并测试 logib_status,如果满意,然后检查角色类型。只是一些想法!尝试将所有数据库内容保留在模型中。我看到它偷偷溜进了你的控制器。
  • @router 请var_dump($answer); 并显示此结果。
  • 这里是模型代码 @Blinkydamo 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->result(); }else { 返回假; } } } ?>

标签: php database codeigniter


【解决方案1】:

在模型中

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

然后申请

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

使用$a 获取值

【讨论】:

    【解决方案2】:
    $data = json_decode(json_encode($answer),true);
    print_r($data);
    

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

    【讨论】:

      【解决方案3】:

      您正在调用模型中的-&gt;result(),然后尝试从控制器调用结果数组。

      要么从模型中的return $query-&gt;result(); 中删除-&gt;result();,要么从控制器中删除-&gt;result_array()

      调用脚本并使用-&gt;get() 后,您一次只能调用一个结果。如果您可能希望在同一查询结果上调用不同的结果参数,例如 -&gt;result()-&gt;num_rows,则只需将查询返回到控制器并在控制器中使用 -&gt;result()

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

      型号

      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();
      

      【讨论】:

        猜你喜欢
        • 2011-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-08
        相关资源
        最近更新 更多