| 제목 | 액티브 레코드 사용시 백틱(`) 문자열이 사라집니다. | ||
|---|---|---|---|
| 글쓴이 | 에카 | 작성시각 | 2013/09/16 22:50:10 | 
| 
                         | 
                |||
                        
   $query = $this->db->SELECT('`V2-tag`.`tag_name`, COUNT(`V2-tag_index`.`tag_id`)')
         ->FROM('`V2-tag_index`')
         ->JOIN('`V2-tag`', '`V2-tag_index`.`tag_id` = `V2-tag`.`tag_id`')
         ->WHERE('`V2-tag_index`.`controllername`', 'imageboard')
         ->WHERE('`V2-tag_index`.`boardid`', $boardid)
         ->GROUP_BY('`V2-tag_index`.`tag_id`')
         ->ORDER_BY('COUNT(`V2-tag_index`.`tag_id`)', 'DESC', true)
         ->LIMIT(30, 0)
         ->GET();
이렇게 짰다면,제가 원하는 SQL은 SELECT `V2-tag`.`tag_name` , COUNT( `V2-tag_index`.`tag_id` ) FROM `V2-tag_index` JOIN `V2-tag` ON `V2-tag_index`.`tag_id` = `V2-tag`.`tag_id` WHERE `V2-tag_index`.`controllername` = 'imageboard' AND `V2-tag_index`.`boardid` = 'imageboard' GROUP BY `V2-tag_index`.`tag_id` ORDER BY COUNT( `V2-tag_index`.`tag_id` ) DESC LIMIT 30이건데, SELECT `V2-tag`.`tag_name`, COUNT(`V2-tag_index`.`tag_id`) FROM `V2-tag_index` JOIN `V2-tag` ON V2-tag_index`.`tag_id` = `V2-tag`.`tag_id` WHERE `V2-tag_index`.`controllername` = 'imageboard' AND `V2-tag_index`.`boardid` = 'imageboard' GROUP BY `V2-tag_index`.`tag_id` ORDER BY COUNT(`V2-tag_index`.`tag_id`) DESC LIMIT 30이렇게 나옵니다. 잘보시면 JOIN문의 ON 뒤에 V2-tag_index 테이블을 가르키는 앞에 ` 문자열이 사라져있죠. 방법이 없을까요? 테이블 이름 바꾸는거 말구요 --; 데이터베이스 드라이버는 PDO드라이버 사용하고, DB는 MySQL(MariaDB)사용중입니다.  | 
                |||
| 다음글 | view 이미지를 만들려고 하는 과정에 다시 질문 드립... (3) | ||
| 이전글 | 조금 황당한 ajax..... (3) | ||
| 
                             
                                변종원(웅파)
                                /
                                2013/09/16 23:00:37 /
                                추천
                                0
                             
                             | 
                    
| 
                             
                                에카
                                /
                                2013/09/16 23:01:58 /
                                추천
                                0
                             
                            
                                 웅파님 // 제가 하도 답답해서 active record 관련해서 쿼리뜯다가 넣은거에요 --; 
                        구조도 모르고 뜯다가 낭패만 봤습니다 --ㅋ  | 
                    
| 
                             
                                letsgolee
                                /
                                2013/09/16 23:05:52 /
                                추천
                                0
                             
                            
                                 system/database/DB_active_rec.php 파일의 다음을 찾아보세요. 331라인정도에 있습니다. 
                        
  if (preg_match('/([\w\.]+)([\W\s]+)(.+)/', $cond, $match))
  {
   $match[1] = $this->_protect_identifiers($match[1]);
   $match[3] = $this->_protect_identifiers($match[3]);
   $cond = $match[1].$match[2].$match[3];
  }그리고 거기서 preg_match 안에 있는 첫번째 괄호에 보면 [\w\.]이렇게 되어 있죠? 거기에 `을 추가해보세요. 그럼 [\w\.`]이렇게 될 겁니다. 그리고 테스트를 ... | 
                    
| 
                             
                                에카
                                /
                                2013/09/16 23:07:07 /
                                추천
                                0
                             
                            
                                letsgolee님 감사합니다. 제 묵은 체증이 한번에 씻어내려가는 느낌입니다 ㅠㅠ 
                        바로 한방에 해결되었네요  | 
                    
| 
                             
                                변종원(웅파)
                                /
                                2013/09/16 23:10:02 /
                                추천
                                0
                             
                            
                                 order_by도 작업하셨나봐요? 
                        AR이 100% 완벽하지 않습니다. 전 조금 복잡해지는 쿼리는 sql문으로 작성하여 사용합니다.  | 
                    
| 
                             
                                에카
                                /
                                2013/09/16 23:16:08 /
                                추천
                                0
                             
                            
                                엇 order_by는 안건드렸는데 왜들어가있는지 모르겠네요 --; 코딩하면서 자꾸 깜빡깜빡 하나봐요. ㅠㅠ 
                        웅파님 말씀대로 앞으로 복잡한 쿼리는 SQL문으로 작성해야겠네요. 감사합니다!  | 
                    
| 
                             
                                들국화
                                /
                                2013/09/17 09:52:21 /
                                추천
                                0
                             
                            
                                AR 을 전혀 안쓰는 1인..... ^^
                             
                         | 
                    
매뉴얼 다시 보시길.. 거기는 left, right 등등 join 방식 쓰는 곳입니다.
세번째 파라미터 지우고 작업했는데도 그렇다면 sql문으로 작성하시는 방법과
버그리포팅을 하는 방법이 있을 것 같네요.