2012-05-10 30 views
25

Bu sorguyu etkin kayıtlara nasıl dönüştürebilirim? Nasıl nerede clausa durumunu kullanma hakkındaBirden çok koşul kod yazıcısı

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

Ben yukarıdaki sorgu dönüştürmek için çalıştı?

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

cevap

57

bir dizi kullanmak ve diziyi geçirebilirsiniz:

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

Ben de bu çalıştı.

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' 

Yoksa daha = Karşılaştırma başka bir şey yapmak istiyorum

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

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

Evet, mükemmel geçerli bir yol olduğu() için birden çağrılar bunu başarmak için.

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

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

+1

. Bir anahtar dizisi kullanmanın çok daha kolay bir değeri – gorelative

+0

Bilmek için kullanışlıdır, çünkü bir koşulu değerlendirdikten sonra bir yan tümceleri genişletmeniz gerekebilir. – AndFisher

1

çoklu amaç

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

} için bu işlevi deneyebilirsiniz

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

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

Cevabınız için teşekkürler ,,, –

2

bu

1

bu yanıt için geç oldu ama bence deneyin m aybe hala yardımcı olabilir, yukarıdaki iki yöntemi deneyin, koşulların ve dizinin yönteminin kullanıldığı iki yöntemi kullanarak, bunların hiçbiri benim için çalışmaz, birkaç test yaptım ve durum hiç bir zaman idam edilmedi, bu yüzden bir geçici çözüm yaptım, işte benim kod: gibi

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

ve doğrudan atamak:

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

sizin gibi hem kullanım dizisi kullanabilirsiniz

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

yardıma istediğiniz. Buna ulaşmak için bir yol olmasına rağmen

İlgili konular