Codeigniter将数据库值分配给变量

时间:2019-03-11 19:06:47

标签: php arrays database codeigniter

我遇到以下错误

  

遇到PHP错误

     

严重性:4096

     

消息:类stdClass的对象无法转换为字符串

尝试执行以下操作

因此,我有一个用户表,该表具有“特权”列。如果将此列设置为1,则该用户为“特权用户”;如果将其设置为0,则该用户为“特权用户”。

此值由我的帐户注册表格指定。

我想做的是在codeigniter中设置一个变量,如果用户是特权用户则为1,否则为0。

我一直在尝试以下内容;

在我的模型中,我有以下内容;

 public function get_privileged($user_id){
    // $this->db->where('user_id',$id);
    // $this->db->select('privileged');
    // $query = $this->db->get('users');
    $query = $this->db->select('privileged')->from('users')->where('id',$user_id)->get();
    return $query->row();

}

**在我看来,我有以下**

<?php $user_id = $this->session->userdata('user_id');?>
<?php $status =  $this->user_model->get_privileged($user_id);?>
<?php var_dump($status);?>

我刚尝试首先在控制器中回显结果,所以我知道它是否有效,最终目标是将值分配给变量,例如变量$ status。

var dump的结果是

object(stdClass)#27 (1) { ["privileged"]=> string(1) "0" } 

请注意,该用户正确的值为0

如果要从数据库返回零,我想将变量设置为零,如果要从数据库返回1,则要将变量设置为1。

我该怎么做,我已经阅读了所有codeigniter文档,但是却无所适从。

2 个答案:

答案 0 :(得分:1)

我相信问题在于它正在返回一个对象而不是字符串。

两个获得我想要的值,我使用了以下echo $status->privileged;

答案 1 :(得分:-1)

问题是当您只需要返回该行的值时就返回该行。

我的建议是使用此

    $result = $this->db->query($query);

    if ($result->num_rows() == 1){ //When I need just one value in case I check if there is just one row.
        return $result->row(0)->privileged;
    }else{
        return false;
    }   

或仅此:

$result = $this->db->query($query); 

return result->row(0)->privileged;