下面的代碼片段打印出一個查詢,該查詢從DOB處於特定年齡範圍的DB獲取用戶。在這種情況下,用戶可能介於11到12或17和18歲之間。我試圖在CodeIgniter Active Record語法中動態創建這個查詢。動態創建WHERE語句
這個片段
$age_count = 0;
foreach($range as $r)
{
$start_date = strtotime($r[0] . "years ago");
$stop_date = strtotime($r[1] . "years ago");
$range = array('dob <' => $start_date, 'dob >' => $stop_date);
($age_count == "0" || $age_count%1) ? $this->db->where($range) : $this->db->or_where($range);
$age_count++;
}
$users = $this->db->get("users")->result_array();
產生這個查詢
SELECT * FROM (`users`) WHERE `dob` < 956351611 AND `dob` > 924729211 OR `dob` < 766962811 OR `dob` > 735426811
最後一跌當然應和。我怎樣才能做到這一點?它歸結爲知道何時使用or_where()
或簡單地where()
。我認爲每一個傳奇都應該是一個OR,但我還沒有完成。
此功能可能只接收一個範圍(11-12)或幾個。
我不熟悉codeignitor,而是使用如何[之間](http://codeigniter.com/forums/viewthread/100048/#508591) ? – 2011-04-21 21:31:06
我總是可以使用一個「正常」的查詢語法應該沒有解決方案... – stef 2011-04-21 21:36:22
其實我會有同樣的問題,當編寫WHERE dob之間x和y或dob之間a和B – stef 2011-04-21 21:37:58