Codeigniter将数据库值分配给变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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转储的结果是

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

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

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

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

答案

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

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

另一答案

那么问题是当你只需要该行的值时,你正在返回行。

我的建议是用这个:

    $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;

以上是关于Codeigniter将数据库值分配给变量的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter,通过变量中包含的值增加数据库值

将 vlookup 值分配给变量

核心数据 - 如何将核心数据中的属性值分配给变量

R:将值分配给数据框中的动态变量时遇到问题

VBA:无法将函数的返回值分配给变量[重复]

无法将“OAuthCredential”类型的值分配给“GoogleAuthCredential”类型的变量