English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 튜토리얼에서는 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(); ?>
<?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] | +----+------------+-----------+----------------------+