Codeigniter, компилирующий запрос - PullRequest
1 голос
/ 13 января 2012

Привет, эксперты по Codeigniter.

Я собираю QUERY несколькими вызовами функции.

Когда это будет сделано, я, конечно, буду использовать QUERY для получения некоторых данных.

Каждый вызов вызывает другую функцию, которая получает и возвращает некоторые переводы, которые должны использоваться в QUERY

Но похоже, что условие WHERE в функции перевода объединяется с условием WHERE, котороеЯ компилирую в основном QUERY

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

, и БД жалуется на это

Номер ошибки: 1054

Неизвестный столбец 'type' в 'where clause'

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 \ database \ DB_driver.php

Номер строки: 330

Как вы видите type IN ('\ 'Forhandler \' ') не имеет ничего общего с asq_value_translation.

У вас есть предложение?

Я думал о клонировании db-объекта, но потом подумал, что я спрашиваюсначала и стреляйте позже.

Спасибо большое и приятно провести время.

1 Ответ

0 голосов
/ 13 января 2012

Вы должны использовать $this->db->last_query(), чтобы увидеть, каков результат вашего запроса. Затем возьмите этот запрос и запустите его в своем клиенте db, чтобы убедиться, что проблема не в codeigniter, а в вашем запросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...