1

在我的模型中,我有这个片段

$this->db->select('*');
        $this->db->from('User');
        $this->db->where('email', $mail);
        $query = $this->db->get();

        return $query;

据我所知,$query 是一个数组(一组结果),我想检索该数组中某个字段的特定值以将其返回或将其分配给另一个变量,问题是如何?

我想做这样的事情

$value = $query['first_field_of_resultset'];
return $value;
4

5 回答 5

1

很多不同的方法可以得到结果。这是一个:

$user = $query->row(); 
echo $user->first_field_of_resultset;

如果您更喜欢数组:

$user = $query->row_array();
echo $user['first_field_of_resultset'];
于 2012-12-07T00:05:48.247 回答
1

如果你想要第一行,你可以这样做:

$row = $query->first_row();

但是如果您只需要一列,我不知道为什么要重新搜索所有字段:

$this->db->select('user.the_column_to_select');
于 2012-12-07T00:18:03.797 回答
1

扩展约翰斯的答案,你需要保护自己,以防万一在你的模型方法中没有任何结果:

// make sure we have a result
if ( $query->num_rows() == 1 ) 
{  
// assign the result 
$user = $query->row();  
// pull out the field you want 
$value = $user->first_field_of_resultset;
// return it
return $value ; 
}
else { return FALSE; }

然后在你的控制器中,说如果模型被称为 user_model

if(! $value = $this->user_model->getUser($email) )
{
 // boo hoo no results
} 
else
{
// success
}

当然,这假设您已经通过 CI 表单验证运行 $email 以确保它是有效的电子邮件 - 在发送到您的数据库之前。

于 2012-12-08T02:37:47.777 回答
0

$query 是一个对象。因此,为了将结果作为数组获得,您需要执行以下操作。

$result = $query->result_array();
return $result[0];
于 2012-12-07T00:17:45.530 回答
0

你也可以试试这个:

$email = $this->db->select('email')->from('users')->where(array(
      'userID' => $userID))->limit(1)->get()->row('email');

// $email will either be the email address you're looking for or FALSE
于 2012-12-23T00:13:54.147 回答