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

ジョンズの答えを拡張すると、モデルメソッドで何も返されない場合に備えて自分自身をカバーする必要があります。

// 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 に答える
1

最初の行が必要な場合は、次のことができます。

$row = $query->first_row();

しかし、必要な列が1つだけの場合に、なぜすべてのフィールドを再取得するのかわかりません。

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

結果を得るにはさまざまな方法があります。ここに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 に答える
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 に答える