Codeigniter将数据库值分配给变量

问题描述 投票:0回答:2

我收到以下错误

遇到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转储的结果是

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

请注意,值0对于该用户是正确的

我想将变量设置为零,如果从db返回零,或者如果从db返回1,则将变量设置为1。

我怎么能这样做,我已经遵循了所有的codeigniter文档,但没有在哪里,我是新手。

php arrays database codeigniter
2个回答
1
投票

我相信问题是它返回的是一个不是字符串的对象。

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


-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;
© www.soinside.com 2019 - 2024. All rights reserved.