code: public function parseCondition( $pattern, $searchValue )
      {
          if(preg_match_all('/:([a-zA-Z0-9_-]+)/i',$pattern,$tmpMatches)){
              $findKeys = array_unique($tmpMatches[1]);
              foreach($findKeys as $column){
                  if(isset($searchValue[$column])) $pattern = str_replace(":".$column,"'".$searchValue[$column]."'",$pattern);
                  else $pattern = str_replace(":".$column,"''",$pattern);
              }
          }
          if(preg_match_all('/::([a-zA-Z0-9_-]+)/i',$pattern,$tmpMatches)){
              $findKeys = array_unique($tmpMatches[1]);
              foreach($findKeys as $column){
                  if(isset($searchValue[$column])) $pattern = str_replace("::".$column,$searchValue[$column],$pattern);
                  else $pattern = str_replace("::".$column,"''",$pattern);
              }
          }
          $pattern = str_replace("%","%%",$pattern);
          $pattern = str_replace("??","%s",$pattern);
          $conditions = str_replace("?","'%s'",$pattern);
  
          if(is_array($searchValue)) {
              $searchValue = $this->arrayToRealEscape($searchValue);
              $conditions = vsprintf($conditions, $searchValue);
          }else{
              $searchValue = $this->realEscapeString($searchValue);
              $conditions = sprintf($conditions, $searchValue);
          }
  
          return $conditions;
      }
docs: 쿼리에 ? 로 파라미터 넣기
  @param $pattern
  @param $searchValue
  @return mixed|string