2011-08-21 119 views
0

有一個表包含像如何使用codeigniter執行此查詢?

username,settings1,settings2,settings3 

用戶名的列是一個獨特的和settings1,2,3是含有0或1的值。

$query = $this->db->query("SELECT * FROM tbl_users WHERE username = 'test'"); 
$queryrow = $query->row(); 

,所以我想選擇匹配用戶名和遍歷列行檢查哪些列包含0和1的

我可以寫一個if語句每列雖然,像

做到這一點
if($queryrow->settings1=="1"){ 
.. 
} 

有像表中的7列所以而不是寫7如果語句,任何其他方式來做到這一點?即時通訊使用笨2.0.2

問候

回答

0

可以遍歷對象

// use active record to work less and be safer 
$this->db->where('username', 'test'); 
$query = $this->db->get('tbl_users'); 

foreach ($query->result() as $row) 
{ 
    // iterate the row object 
    foreach($row as $key => $item) 
    { 
     if($row->$key == "1") 
     { 
      // your code 
     } 
    } 
} 

如果你需要在這個循環正在檢查這些價值觀的事,你應該做一個選擇讓只有那些項目在$行,並避免「用戶名」

$this->db->select('setting1, setting2, setting3'); 

否則,如果你想保留用戶名,IF語句可能相當

if(in_array($key, array('setting1', 'setting2', 'setting3')) && $row->$key == "1") 
1
// use active record to work even less and be safer 
$query = $this->db->get_where('tbl_users', array('username' => 'test')); 
if($query->num_rows() < 1){ 
    //prevent errors 
    return false; // or do something more apropriate 
} 

$data = $query->row(); 
$data->setting1; // contains setting1 value 
$data->setting2; // contains setting2 value 
$data->setting3; // contains setting3 value 
+0

的事情是我要檢查的設置值過其是否含有1或0 –

+0

好不是,我不認爲有任何其他方式,而不是爲每個設置調用「if」。您將需要根據每個設置的值來編寫要執行的操作,並且只能通過if語句實現。如果你寫了這些設置所做的事情,也許它們中的一些可以複合,如果它們是互斥的,但這是db table desing的問題:) –

1

您可以使用ActiveRecord outputing從表數組

$qry = $this->db->get_where('tbl_users',array('username' => 'test')); 
$res = $qry->result_array(); 

// Since you mention each username is a unique, then this should outputing the array of settings 
var_dump($res[0]);