1
嗨Codeigniter Experts。Codeigniter編譯查詢
我通過多次調用函數來編譯QUERY。
完成後,我將使用QUERY檢索某些數據。
每次調用,調用另一個函數獲取並返回一些翻譯這是應該在QUERY
被使用,但它似乎像在翻譯功能可按WHERE條件得到由WHERE條件我敢串連編譯主查詢
private function add_to_asq($field_name, $values)
{
.
.
.
.
$result = array();
foreach($values[$last_level] as $val)
{
foreach($val as $v )
{
$result[] = $this->db->escape($this->asq_value_translate($last_level, $v, $field_name));
}
}
$this->db->where_in(sprintf('%1$s' , $field_name ) , implode(',' , $result));
}
private function asq_value_translate($level, $value_md5 , $field_name)
{
$this->db->select(sprintf('level_%1$d, level_%1$d_value' , $level))
->distinct()
->from('search_options_tree_view')
->where(sprintf('md5(level_%1$d_value) = ' , $level), $value_md5)
->where('field_name' , $field_name);
$q = $this->db->get();
$value_name = sprintf('level_%1$d' , $level);
$row = $q->row(0);
$q->free_result();
return $row->$value_name;
}
和DB抱怨它
錯誤編號:1054
未知列 '類型' 在 'where子句'
SELECT DISTINCT `level_1`, `level_1_value` FROM (`search_options_tree_view`) WHERE
`type` IN ('\'Forhandler\'')
AND md5(level_1_value) = '138be735c55896dbdbea9b6c5d503b6f' AND `field_name` = 'fuel'
文件名:C:\ WAMP \ WWW \ SYSTEM \數據庫\ DB_driver.php
行號:330
正如你所看到的IN('\'Forhandler \'')與asq_value_translation沒有任何關係。
你有什麼建議嗎?
我想過克隆數據庫對象,但後來我認爲我先詢問後再拍。
非常感謝,有一個美好的時光。
我希望使用框架來聲明查詢。但是,看起來WHERE是一種全球性的可以這麼說。在任何功能被執行之前,哪裏都可以被操縱。 – 2012-01-14 12:35:24
是的,但如果您使用last_query函數,您可以看到爲where子句生成了什麼,然後根據需要進行修改。 – Catfish 2012-01-16 14:23:48
謝謝,我會試試看。乾杯 – 2012-01-17 09:29:37