2017-05-23 14 views
1

私のデータテーブルには、OQCで始まるデータのみが表示されます。where句で値が指定されていると、単一のフィルタが機能しない

require('ssp.class.join.php'); 

    $joinQuery = "FROM `monitor` AS `a` JOIN `sym_category` AS `b` JOIN `model_cat` AS `c`"; 
    $joinQuery.= "ON (`b`.`id_sym` = `a`.`id_sym`) AND (`c`.`id_mod` = `a`.`id_mod`)"; 
    $joinQuery.= " WHERE `a`.`id_car` LIKE 'OQC%'"; 

    echo json_encode(
     SSP::simple($_GET, $sql_details, $table, $primaryKey, $columns, $joinQuery) 
    ); 

ssp.class.join.php:

static function filter ($request, $columns, &$bindings, $isJoin = false) 
    { 
     $globalSearch = array(); 
     $columnSearch = array(); 
     $dtColumns = SSP::pluck($columns, 'dt'); 

     if (isset($request['search']) && $request['search']['value'] != '') { 
      $str = $request['search']['value']; 

      for ($i=0, $ien=count($request['columns']) ; $i<$ien ; $i++) { 
       $requestColumn = $request['columns'][$i]; 
       $columnIdx = array_search($requestColumn['data'], $dtColumns); 
       $column = $columns[ $columnIdx ]; 

       if ($requestColumn['searchable'] == 'true') { 
        $binding = SSP::bind($bindings, '%'.$str.'%', PDO::PARAM_STR); 
        $globalSearch[] = ($isJoin) ? $column['db']." LIKE ".$binding : "`".$column['db']."` LIKE ".$binding; 
       } 
      } 
     } 

     // Individual column filtering 
     for ($i=0, $ien=count($request['columns']) ; $i<$ien ; $i++) { 
      $requestColumn = $request['columns'][$i]; 
      $columnIdx = array_search($requestColumn['data'], $dtColumns); 
      $column = $columns[ $columnIdx ]; 

      $str = $requestColumn['search']['value']; 

      if ($requestColumn['searchable'] == 'true' && 
       $str != '') { 
       $binding = SSP::bind($bindings, '%'.$str.'%', PDO::PARAM_STR); 
       $columnSearch[] = ($isJoin) ? $column['db']." LIKE ".$binding : "`".$column['db']."` LIKE ".$binding; 
      } 
     } 

     // Combine the filters into a single string 
     $where = ''; 

     if (count($globalSearch)) { 
      $where = '('.implode(' OR ', $globalSearch).')'; 
     } 

     if (count($columnSearch)) { 
      $where = $where === '' ? 
       implode(' AND ', $columnSearch) : 
       $where .' AND '. implode(' AND ', $columnSearch); 
     } 

     if ($where !== '') { 
      $where = 'WHERE '.$where; 
     } 

     return $where; 
    } 

表示エラー:syntax error near 'WHERE a.id_car.....'。 私はどちらの部分を変更する必要がありますか?

+0

https://github.com/emran/ssp '$ extraCondition'に従ってください。 – nunu

答えて

0

文法エラーがあるので、連結された正確なクエリを見てください。

推測(エラーがいるいただきましたthatsのことから、全体のクエリまたはより良い)$whereが最後にどうなるかを見てみてください、おそらくあなたの最後の行の先頭にスペースの必要性をtheresの

$where = ' WHERE '.$where; 
+0

は既に変更されていますが、まだ1列のフィルタリングができません – nunu

+0

実際にSQLを提供していない限り、 – BobbyTables

関連する問題