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