使用Codeigniter从结果集中获取值

时间:2012-12-07 00:04:30

标签: php mysql codeigniter activerecord

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

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

5 个答案:

答案 0 :(得分:1)

a bunch of different ways to get the results。这是一个:

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

如果您更喜欢数组:

$user = $query->row_array();
echo $user['first_field_of_resultset'];

答案 1 :(得分:1)

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

$row = $query->first_row();

但是,如果您只需要一列,我就不知道为什么要撤回所有字段:

$this->db->select('user.the_column_to_select');

答案 2 :(得分: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以确保它是有效的电子邮件。

答案 3 :(得分:0)

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

$result = $query->result_array();
return $result[0];

答案 4 :(得分: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