| 제목 | sqlsrv 드라이버 사용시 버그 | ||
|---|---|---|---|
| 글쓴이 | 오봉구 | 작성시각 | 2013/11/02 22:05:31 | 
|  | |||
| sqlsrv 드라이버로 개발을 진행중인데요, 액티브레코드로 개발하다보면 당연히 되야 되는데, 안되서 애먹다가 코어를 까보면 코드가 이상한 부분이 있네요, sqlsrv 드라이버로 delete 문에다가 where랑 like 를 적용했는데요, 실제로 쿼리결과는 like는 생략하고 where만 적용되더라구요, DB_active_rec.php 파일 1574번째 줄에 보면 $this->_delete($table, $this->ar_where, $this->ar_like, $this->ar_limit); 위와 같은 파라미터로 함수를 호출합니다. mysql 드라이버에서는 위 함수가  function _delete($table, $where = array(), $like = array(), $limit = FALSE)  {   $c>
   if (count($where) > 0 OR count($like) > 0)   {    $c ";    $conditions .= implode("\n", $this->ar_where);    if (count($where) > 0 && count($like) > 0)    {     $conditions .= " AND ";    }    $conditions .= implode("\n", $like);   }   $limit = ( ! $limit) ? '' : ' LIMIT '.$limit;   return "DELETE FROM ".$table.$conditions.$limit;  } 이렇게 구현되어 있구요, 그런데 sqlsrv 드라이버에는         function _delete($table, $where)  {   return "DELETE FROM ".$this->_escape_table($table)." WHERE ".implode(" ", $where);  } 이렇게 구현되어 있네요, mysql 드라이버의 _delete 함수의 내용을 sqlsrv 드라이버의 _delete 함수에 그대로 적용하시고, limit 관련된 부분만 제거해주시거나, top으로 바꾸어 주시면 될것같습니다. 저는 임의로 $limit 처리 하는 부분만 주석처리해서 쓰고 있습니다. | |||
| 다음글 | PHP 메모리 릭(누수) 관련 슬라이드쉐어 자료 (1) | ||
| 이전글 | 배열이름의 다중업로드 구현방법 (input type=f... | ||
| 
                                구치리
                                /
                                2013/12/13 03:20:20 /
                                추천
                                0
                             | 
| 
                                한대승(불의회상)
                                /
                                2013/12/13 10:03:04 /
                                추천
                                0
                             
                                Mysql 위주로 사용하다 보니 다른 드라이버에서 발생하는 버그를 알지 못하게 되는데 좋은 정보 감사 합니다.
                             | 
해결책까지 알려주시네요
감사합니다