代码之家  ›  专栏  ›  技术社区  ›  useruser

如何从阵列中检索信息

  •  1
  • useruser  · 技术社区  · 11 年前

    您好,我是codeigniter框架的初学者,我很难理解如何从方法返回的数组中检索信息。

    在我的索引页面上,我有一个登录表单,当用户插入用户名和密码并单击提交按钮时,他调用控制器的方法login,其任务是从表单中收集用户名和密码,并将数据传递给models方法“login($username,$password)”,然后models方法返回true或false,具体取决于数据库中是否有有效用户,然后控制器的方法要么进一步传递用户,要么从头返回用户。我的问题是我想知道用户的访问级别,我在模型中制作了这个方法

    public function users_level($username){
    
    $query = $this->db->get_where('users',array('username' => $username) );
    
    $users_level = $query->result();    // I tried with these too $users_level[] = $query->result();    
    
    return $users_level;
    

    }

    我想用它返回用户的访问级别,并使用该信息来确定为该特定用户呈现什么视图。

    这是控制器的登录方法:

    public function login(){
        $username = $this->input->post('username');
        $password = $this->input->post('password');
    
        $this->load->model('model_user');
        $logged_in = $this->model_user->login($username,$password);
        if ($logged_in == true){     
            $result['level'] = $this->model_user->users_level($username);
            $this->welcome($result);                    
        }else if ($logged_in == false){ 
            $this->index();
        }
    }
    

    这是我的欢迎页面。

    <?php
    echo "<br/><br/> WELCOME <br/><br/>";
    
    //echo "Users level is : " . $user_level['level'];      //this is problem
    
    ?>
    <?php  
          print_r($user_level); 
    
    ?>
    

    现在我不知道如何从这个数组中提取信息。 当我这样做的时候

    print_r($user_level); 
    

    要查看输出是什么,我得到的结果是:

    欢迎

    Array ( [level] => Array ( [0] => stdClass Object ( [id] => 13 [username] => john_username [password] => 123 [name] => john [surname] => johnson [phone] => 123456 [email] => john@gmail.com [level] => 2 [user_type] => professor [activated] => 1 [is_admin] => 0 [is_professor] => 1 [desk] => [academic_year] => 0 [average_grade] => 0 ) ) )
    

    如果我尝试这样做:

    echo "Users level is : " . $user_level['level'];
    

    或:

    echo "Users level is : " . $user_level->level;
    

    发生错误:

    A PHP Error was encountered
    Severity: Notice
    Message: Trying to get property of non-object
    Filename: views/view_welcome_page.php
    

    我知道这不是一个对象,但我不知道如何从表中检索列级别的信息? 提前谢谢

    2 回复  |  直到 8 年前
        1
  •  0
  •   Kuldeep Singh    11 年前
    edit your code in function as
    $users_level = $query->result_array(); 
    
    then u will get info like   
    
    $userlevels = Array ( "level" => Array ( "0" => array ( "id" => '13' ) ) );
    echo "Users level is : " . $userlevels['level'][0]['id'];
    
        2
  •  0
  •   user1587985    11 年前

    如果您想要数组(对于单行),请像这样编辑模型:

    $users_level = $query->row_array();
    return $users_level;
    

    对于多行:

    $query->result_array();
    
    推荐文章