2012-05-10 25 views
25

このクエリをアクティブレコードに変換するにはどうすればよいですか?どのようにどこclausaステータスの使用についてmultiple where条件コード番号

$data = array('email' => $email, 'last_ip' => $ip); 
$this->db->where('username',$username); 
$this->db->update('table_user',$data); 

"UPDATE table_user 
SET email = '$email', last_ip = '$last_ip' 
where username = '$username' and status = '$status'"; 

は私がするために、上記のクエリを変換しようとしましたか?

# must i write db->where two times like this? 
$this->db->where('username',$username); 
$this->db->where('status',$status); 

また、私はこの試みた:あなたは配列を使用して配列を渡すことができ

$this->db->where('username',$username,'status',$status); 

答えて

57

を。

Associative array method: 
$array = array('name' => $name, 'title' => $title, 'status' => $status); 

$this->db->where($array); 

// Produces: WHERE name = 'Joe' AND title = 'boss' AND status = 'active' 

それとも、()はこれを達成するために完全に有効な方法である場所に複数の呼び出しをより=比較

$array = array('name !=' => $name, 'id <' => $id, 'date >' => $date); 

$this->db->where($array); 
14

はい、他の何かをしたい場合。

$this->db->where('username',$username); 
$this->db->where('status',$status); 

http://www.codeigniter.com/user_guide/database/query_builder.html

+1

これはこれを達成するための1つの方法です。キーの配列を使用する方がはるかに簡単です – gorelative

+0

いくつかの条件を評価した後にwhere節を拡張する必要があるかもしれないので、知っておきましょう。 – AndFisher

1

あなたは多目的

function ManageData($table_name='',$condition=array(),$udata=array(),$is_insert=false){ 
$resultArr = array(); 
$ci = & get_instance(); 
if($condition && count($condition)) 
    $ci->db->where($condition); 
if($is_insert) 
{ 
    $ci->db->insert($table_name,$udata); 
    return 0; 
} 
else 
{ 
    $ci->db->update($table_name,$udata); 
    return 1; 
} 

}

+0

返信ありがとうございました,,, –

2

をお試しくださいm aybeはまだ助けることができます、上記の両方の方法を試してみましょう.2つの条件と配列のメソッドを使用して、それらのどれも私はいくつかのテストを行い、条件は決して実行されませんでした。コードは:のような

$array = array('tlb_account.crid' =>$value , 'tlb_request.sign'=> 'FALSE'); 

と直接割り当て:

public function validateLogin($email, $password){ 
     $password = md5($password); 
     $this->db->select("userID,email,password"); 
     $query = $this->db->get_where("users", array("email" => $email)); 
     $p = $query->row_array(); 

     if($query->num_rows() == 1 && $password == $p['password']){ 
      return $query->row(); 
     } 

    } 
1

のがこの回答に遅れだが、私が思うに、この機能を試すことができます。この

$data = array(
       'email' =>$email, 
       'last_ip' => $last_ip 
      ); 

$where = array('username ' => $username , 'status ' => $status); 
$this->db->where($where); 
$this->db->update('table_user ', $data); 
1

あなたは次のように両方の使用の配列を使用することができます

$this->db->where('tlb_account.crid' =>$value , 'tlb_request.sign'=> 'FALSE'); 

私は助けあなたを願っています。