2012-01-13 5 views
1

こんにちはCodeigniterエキスパート。クエリをコンパイルするCodeigniter

私はいくつかの関数呼び出しによってQUERYをコンパイルしています。

これが完了すると、もちろんいくつかのデータを取得するためにQUERYを使用します。

各呼び出しは、取得しQUERY

で使用されることを想定しているいくつかの翻訳を返す別の関数を呼び出します。しかし、それは、翻訳funcitonで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;  
    } 

にコンパイルし、DBはそれ

エラー番号文句を言う:1054

不明な列 '型' に

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' 

ファイル名 'WHERE句を':C:\ WAMP \ WWW \システム\データベース\ DB_driver.php

行番号:330

ご覧のとおりtype IN( '\' forhandler \ '')は、asq_value_translationには何もありません。

提案がありますか?

私はdbオブジェクトを複製することを考えましたが、最初に尋ねて後で撮影すると考えました。

ありがとう、楽しい時間があります。

答えて

0

$this->db->last_query()を使用して、実際にクエリの出力結果を確認してください。次に、そのクエリーを取得してdbクライアントで実行し、問題がcodeigniterではなくクエリーにあることを確認します。

+0

私はフレームワークを使用してクエリをアセろばしたいと思っています。しかし、WHEREはこういったグローバルなものだと思われます。実行される前に、どの関数でも操作することができます。 –

+1

しかし、last_query関数を使用すると、where句に対して何が生成されているかを確認し、必要に応じて変更することができます。 – Catfish

+0

ありがとう私はそれを試してみましょう。乾杯 –

関連する問題