[PHP] MySQL 불러올 레코드 수 지정하기 LIMIT

2022. 10. 4. 02:37Program/PHP

118_PHP MySQL 불러올 레코드 수 지정하기 LIMIT

[요약]

  • 데이터베이스에서 데이터를 불러오는 수를 지정하는 명령문 LIMIT 에 대해 알아보자

인스타그램이나 페이스북 등의 서비스를 이용하면 모든 데이터를 한꺼번에 보여주지 않는다.

이 많은 게시물을 동시 접속자에게 모두 보여주게 되면 서비스에 엄청난 부하가 발생한다.

그래서 첫 페이지에 몇 개의 게시물을 보여주고 [다음]버튼을 클릭하거나 스크롤을 내리면 그 다음의 게시물을 출력하는 방식으로 시스템을 설계하게 된다.

 

이는 사용자에게 한꺼번에 많은 자료를 보여주어 혼란을 겪지 않게 하는 효과도 있으며, 한꺼번에 많은 데이터를 불러오지 않음으로써 서비스를 원활하게 운영하기 위한 효과도 있다. 이러한 서비스를 만들기 위해 테이블에서 레코드를 불러올 때 불러오는 수를 조절하는 방법은 LIMIT를 사용하는 것이다.


[LIMIT 사용 방법]

SELECT 필드명 FROM 테이블명 LIMIT 불러올 수

쿼리문의 마지막에 LIMIT를 적은 후 불러올 수 를 지정한다.

myMember 테이블에서 3개의 레코드를 불러온다면 다음과 같은 쿼리문을 실행하면 된다.

SELECT * FROM myMember LIMIT 3;

 

다음은 LIMIT 문을 사용한 예제이다.

[예제: 121-1_limitOne.php ]

<?php
    include $_SERVER['DOCUMENT_ROOT'] . '/php/108-2_connectDB.php';

    $sql = "SELECT name FROM myMember LIMIT 3";
    $result = $dbConnect->query($sql);  // 쿼리 송신

    $dataCount = $result->num_rows;
    echo "데이터 수 : {$dataCount} <br>";

    for ($i = 0; $i < $dataCount; $i++) {
      $memberInfo = $result->fetch_array(MYSQLI_ASSOC);
      echo "이름 : " . $memberInfo['name'];
      echo "<br>";
    }
?>

실행결과

 

여러 커뮤니티 사이트의 게시판 페이지를 살펴보면 처음에 20여개의 게시물을 출력하고 [다음] 버튼을 클릭하면 그 다음 순번 20개의 게시물을 보여주는 형식인 것을 알 수 있다.

이를 구현하려면 LIMIT 에 2개의 값을 적용해야 한다. LIMIT에 값을 하나만 사용하면 그 값은 개수로 사용되지만, 값을 2개 사용하면 첫 번째 값은 그 다음 불러올 레코드의 순번이며, 이 순번은 1부터 수를 세지 않고 0부터 센다.

두 번째 값은 불러올 수 를 의미한다.

 

[LIMIT 에 값 2개를 적용하는 방법]

SELECT 필드명 FROM 테이블명 LIMIT 불러올레코드순번, 불러올갯수

한 페이지당 2명의 학생을 보여주고, 그 다음 페이지에서 다음 순번의 2명의 학생을 출력하는 웹페이지를 만들 때의 쿼리문은 다음과 같이 작동한다.

페이지 쿼리문
1 SELECT * FROM myMember LIMIT 2;
2 SELECT * FROM myMember LIMIT 2, 2;
3 SELECT * FROM myMember LIMIT 4, 2;

LIMIT의 첫 번째 값에 불러올 순번을 적고, 두 번째 값에 불러올 개수를 적는다.

 

다음은 LIMIT문에 값을 2개 사용한 예제이다.

[예제: 121-2_limitTwo.php ]

<?php
    include $_SERVER['DOCUMENT_ROOT'] . '/php/108-2_connectDB.php';

    $sql = "SELECT name FROM myMember LIMIT 2, 3";
    $result = $dbConnect->query($sql);  // 쿼리 송신

    $dataCount = $result->num_rows;

    for ($i = 0; $i < $dataCount; $i++) {
      $memberInfo = $result->fetch_array(MYSQLI_ASSOC);
      echo "이름 : " . $memberInfo['name'];
      echo "<br>";
    }
?>

실행결과

위 그림에서 첫 번째 결과물은 데이터를 모두 표시한 데이터이며 두 번째 결과물은 [코드 121-2]에서 사용한 쿼리문을 사용한 결과물이다. 순번은 0에서 시작하므로 2부터 시작하여 3개의 데이터를 출력한다.

 

 

 

 

 


 

 

 

초보자를 위한 PHP 200제
김태영 지음 | 정보문화사