| 제목 | 페이지네이션 작업중 오류 | ||
|---|---|---|---|
| 카테고리 | CI 2, 3 | ||
| 글쓴이 | 창쓰 | 작성시각 | 2017/08/04 11:53:45 | 
|  | |||
| 
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
 class Write_model extends CI_Model{
   function __construct(){
     parent::__construct();
   }
   public function write_gets(){
     return $this->db->query('SELECT*FROM bookingdb')->result();
   }
   function get_list($table = 'bookingdb',$type='',$offset='',$limit='') {
    $limit_query='';
    if($limit!='' or $offset!=''){
      //페이징 있을경우 처리
      $limit_query = 'LIMIT'.$offset.','.$limit;
      }
    $sql = "SELECT * FROM".$table."order by id desc".$limit_query;
    $query = $this->db->query($sql);
    if($type == 'count'){
      //리스트를 반환하는 것이 아니라 게시물의 개수를 반환
      $result = $query->num_rows();
      //$this->db->count_all($table);
    }else{
      //게시물 리스트반환
      $result = $query->result();
    }
    return $result;
}
}
?>밑에와 같은 오류를 발생합니다. 왜 그럴까요...ㄷㄷ;; 페이지네이션 작업중입니다.. 
 오류내용 : A Database Error Occurred Error Number: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROMorder by id desc' at line 1 SELECT * FROMorder by id desc Filename: models/Write_model.php Line Number: 19 | |||
| 다음글 | 염치없지만 페이징 관련하여 또 질문드립니다.. (14) | ||
| 이전글 | 코드이그나이터와 PDO (3) | ||
| 
                                빛그림
                                /
                                2017/08/04 12:36:57 /
                                추천
                                0
                             | 
| 
                                창쓰
                                /
                                2017/08/04 12:55:49 /
                                추천
                                0
                             @빛그림님 말씀대로 작업을 진행하였으나, 동일한 에러가 납니다 ㅠㅠ 8번째 라인 return $this->db->query('SELECT * FROM bookingdb')->result(); // *앞 뒤로 공백을 넣었습니다 17번째라인 $sql = " SELECT * FROM ".$table." order by id desc ".$limit_query; // 공백을 주었습니다. 또한 c와 따옴표사이에도 공백을 주었지만, 동일한 에러가 발생하고 있습니다 ㅠㅠ | 
| 
                                빛그림
                                /
                                2017/08/04 13:03:36 /
                                추천
                                0
                             에러메세지의 내용을 보시면 FROM뒤에 테이블명이 나오지 않네요. $sql = "SELECT * FROM".$table."order by id desc".$limit_query; 을 $sql = "SELECT * FROM bookingdb order by id desc".$limit_query; 으로 수정해보세요. | 
| 
                                kaido
                                /
                                2017/08/04 13:04:07 /
                                추천
                                0
                             
        $this->db->from($table);
        $this->db->order_by("id","desc");
        if($limit!='' or $offset!='') $this->db->limit($limit, $offset);
        $query = $this->db->get();
        $data = $query->result();개인적으로 액티브레코드를 권합니다. 페이지네이션 쿼리는 훨씬 보기 깔끔하게 정리 됩니다. 올려주신 해당 쿼리문에는 바인딩이나 이스케이프문을 넣지 않아서 보안에도 좋지 않습니다. [액티브는 자동으로 해줍니다.] 
 | 
| 
                                창쓰
                                /
                                2017/08/04 13:12:07 /
                                추천
                                0
                             @빛그림님 말씀대로 수정하였는데, A Database Error OccurredError Number: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT0,10' at line 1 SELECT * FROM bookingdb order by id desc LIMIT0,10 Filename: models/Write_model.php Line Number: 19 이번엔 조금 다른 오류가 생겼습니다. 어휴 어렵네요 ㅠㅠ 혹시 제가 db 테이블에 id값 시작을 1부터 설정했는데, 이것때문에 문제가 되는걸까요??ㅠ | 
| 
                                창쓰
                                /
                                2017/08/04 13:14:09 /
                                추천
                                0
                             @kaido님 답변 감사합니다 참고하여 적용해보도록 하겠습니다. | 
| 
                                빛그림
                                /
                                2017/08/04 13:16:47 /
                                추천
                                0
                             에러메세지를 보시면 LIMIT0,10이라고 나왔잖아요. $limit_query 부분이 잘못되어서 그렇습니다. LIMIT 0, 10으로 나와야 해요. 15번 라인에 'LIMIT을 ' LIMIT 으로 해보세요. 공백 삽입 | 
| 
                                창쓰
                                /
                                2017/08/04 13:32:47 /
                                추천
                                0
                             
                                @빛그림 @kaido님 감사합니다! 덕분에 잘 해결되었습니다~ 감사합니다~
                             | 
8번 라인에 SELECT*FROM을 SELECT * FROM으로 * 앞뒤에 공백을 주세요.
17번 라인에 FROM" 을 FROM " 으로 영문자 M과 따옴표 사이에 공백을 주세요.
그리고 "order 에도 " order이 되도록 따옴표와 영문자 o 사이에도 공백을 주시고요.
desc"에도 영문자 c와 따옴표 사이에 공백을 주어야 하고요.
"아버지가 방에 들어가신다"와 "아버지 가방에 들어가신다"의 차이 같은... ^^