English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP 기본 튜토리얼

PHP 고급 튜토리얼

PHP & MySQL

PHP 참조 매뉴얼

PHP MySQL LIMIT

이 튜토리얼에서는 PHP를 사용하여 MySQL 데이터베이스 테이블에서 제한된 수의 레코드를 읽는 방법을 배울 것입니다。

결과 집합을 제한합니다

LIMIT절은SELECT문장이 반환하는 행 수는 페이지 로드 시간을 최적화하고 웹 사이트의 가독성을 향상시키는 데 큰 도움이 됩니다. 예를 들어, 많은 레코드를 여러 페이지로 나누어 페이징을 사용할 수 있으며, 사용자가 페이징 링크를 클릭하여 페이지를 요청할 때마다 데이터베이스의 각 페이지에서 제한된 수의 레코드를 로드할 수 있습니다。

LIMIT 절의 기본 문법은 다음과 같습니다:

SELECT column_name(s) FROM table_name LIMIT row_offset, row_count;

LIMIT 절은 하나나 두 개의 매개변수를 받아야 하며, 이 매개변수들은 모두 비음수 정수여야 합니다:

  • 두 가지 매개변수를 지정하면, 첫 번째 매개변수는 반환할 첫 번째 행의 오프셋(시작점)을 지정하고, 두 번째 매개변수는 반환할 행 수를 지정합니다. 첫 번째 행의 오프셋은 0입니다(아니라)1)。

  • 한 가지 매개변수만 주어지면, 결과 집합의 시작 부분에서 반환할 최대 행 수를 지정합니다。

예를 들어,前三행을 검색하려면 다음과 같은 쿼리를 사용할 수 있습니다:

SELECT * FROM persons LIMIT 3;

결과 집합의2-4행(포함), 다음과 같은 쿼리를 사용할 수 있습니다:

SELECT * FROM persons LIMIT 1, 3;

SELECT 문의 LIMIT 절을 사용하여 SQL 쿼리를 수행하고, 이를 PHP mysqli_query() 함수에 전달하여 제한된 레코드 수를 얻을 수 있습니다. 다음과 같은 persons 테이블을 데모 데이터베이스로 고려해 주세요:

+----+------------+-----------+----------------------+
| id | first_name | last_name | email               |
+----+------------+-----------+----------------------+
|  1 | Peter      | Parker    | [email protected] |
|  2 | John       | Rambo     | [email protected]   |
|  3 | Clark      | Kent      | [email protected]   |
|  4 | John      | Carter    | [email protected]  |
|  5 | Harry      | Potter    | [email protected] |
+----+------------+-----------+----------------------+

아래 예제의 PHP 코드는 다음과 같이 표시됩니다persons테이블의 세 행.

예제: 과정 지향 방식

<?php
/*MySQL 서버 연결을 시도합니다. MySQL이 실행 중인 것을 가정합니다.
기본 설정이 있는 서버(비밀번호가 없는 사용자 "root") */
\$link = mysqli_connect("localhost", "root", "", "demo");
 
//연결 확인
if(\$link === false){
    die(\
}
 
//쿼리 실행 선택 시도
$sql = "SELECT * FROM persons LIMIT 3";
if(\$result = mysqli_query(\$link, \$sql)){
    if(mysqli_num_rows(\$result) > 0){
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while(\$row = mysqli_fetch_array(\$result)){
            echo "<tr>";
                echo "<td>" . $row['id'] . "</td>";
                echo "<td>" . $row['first_name'] . "</td>";
                echo "<td>" . $row['last_name'] . "</td>";
                echo "<td>" . $row['email'] . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        //결과 집합을 닫습니다
        mysqli_free_result(\$result);
    } else{
        echo "귀하의 쿼리와 일치하는 기록을 찾을 수 없습니다.";
    }
} else{
    echo \
}
 
//연결을 종료합니다
mysqli_close(\$link);
?>

예제: 객체 지향 방식

<?php
/*MySQL 서버 연결을 시도합니다. MySQL이 실행 중인 것을 가정합니다.
기본 설정이 있는 서버(비밀번호가 없는 사용자 "root") */
\$mysqli = new mysqli("localhost", "root", "", "demo");
 
//연결 확인
if(\$mysqli === false){
    die(\->connect_error);
}
 
//쿼리 실행 선택 시도
$sql = "SELECT * FROM persons LIMIT 3";
if(\$result = \$mysqli->query(\$sql){{
    if($result->num_rows > 0){{
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while($row = $result->fetch_array(){{
            echo "<tr>";
                echo "<td>" . $row['id'] . "</td>";
                echo "<td>" . $row['first_name'] . "</td>";
                echo "<td>" . $row['last_name'] . "</td>";
                echo "<td>" . $row['email'] . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        //결과 집합을 해제합니다
        $result->free();
    } else{
        echo "귀하의 쿼리와 일치하는 기록을 찾을 수 없습니다.";
    }
} else{
    echo \->error;
}
 
//연결을 종료합니다
$mysqli->close();
?>

예제: PDO 방식

<?php
/*MySQL 서버 연결을 시도합니다. MySQL이 실행 중인 것을 가정합니다.
기본 설정이 있는 서버(비밀번호가 없는 사용자 "root") */
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", \
    //PDO 오류 모드를 예외로 설정합니다
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    die("에러:연결할 수 없음 " . $e->getMessage());
}
 
//쿼리 실행 선택 시도
try{
    $sql = "SELECT * FROM persons LIMIT 3";  
    $result = $pdo->query($sql);
    if($result->rowCount() > 0){
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while($row = $result->fetch()){
            echo "<tr>";
                echo "<td>" . $row['id'] . "</td>";
                echo "<td>" . $row['first_name'] . "</td>";
                echo "<td>" . $row['last_name'] . "</td>";
                echo "<td>" . $row['email'] . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        //결과 집합을 해제합니다
        unset($result);
    } else{
        echo "귀하의 쿼리와 일치하는 기록을 찾을 수 없습니다.";
    }
} catch(PDOException $e){
    die("에러:실행할 수 없음 $sql. " . $e->getMessage());
}
 
//연결을 종료합니다
unset($pdo);
?>

결과 집합을 제한하면, 출력은 다음과 같이 됩니다:

+----+------------+-----------+----------------------+
| id | first_name | last_name | email               |
+----+------------+-----------+----------------------+
|  1 | Peter      | Parker    | [email protected] |
|  2 | John       | Rambo     | [email protected]   |
|  3 | Clark      | Kent      | [email protected]   |
+----+------------+-----------+----------------------+