English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 튜토리얼에서는 PHP를 사용하여 MySQL 테이블의 데이터를 오름차순 또는 내림차순으로 정렬하고 표시하는 방법을 배울 것입니다.
ORDER BY절과 함께 사용할 수 있습니다:SELECT문장을 결합하여 특정 필드에 따라 정렬된 테이블의 데이터를 확인할 수 있습니다. ORDER BY 절은 정렬 기준 필드 이름과 정렬 방향(오름차순 또는 내림차순)을 정의할 수 있습니다.
이 절의 기본 문법은 다음과 같이 제공됩니다:
SELECT column_name(s) FROM table_name ORDER BY column_name(s) ASC|DESC
SELECT 문의 ORDER BY 절을 사용하여 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 테이블에서 모든 행을 선택합니다:first_name결과를 알파벳 순으로 정렬합니다.
<?php /* MySQL 서버 연결 시도. MySQL을 실행 중인 것으로 가정합니다. 기본 설정된 서버(비밀번호 없는 사용자 "root") */ $link = mysqli_connect("localhost", "root", "", "demo"); //연결 확인 if($link === false){ die("에러: 연결할 수 없음. ". mysqli_connect_error()); } //ORDER BY 절을 사용하여 SELECT 쿼리 실행 시도 $sql = "SELECT * FROM persons ORDER BY first_name"; if($result = mysqli_query($link, $sql)){ if(mysqli_num_rows($result) > 0){ echo "<th>first_name< echo "<td>" . $row['first_name'] . "< echo "<th>last_name</>fetch()){ echo "<th>email</>fetch()){ th>";/>fetch()){ while($row = $result/>fetch()){ 결과 집합을 해제합니다/table>"; while($row = mysqli_fetch_array($result)){ echo "<td>" . $row['first_name'] . "< echo "<td>" . $row['last_name'] . "</echo "< echo "<td>" . $row['email'] . "</echo "< td>";/echo "< tr>";/echo "< 결과 집합을 해제합니다/table>"; } 결과 집합을 해제합니다/unset($result); //결과 집합을 닫습니다 mysqli_free_result($result); echo "존재하지 않는 기록이 있습니다."; catch(PDOException $e){ } echo "존재하지 않는 기록이 있습니다."; echo "에러: 실행할 수 없음. ". mysqli_error($link); } //연결을 종료합니다 mysqli_close($link); ?>
<?php /* MySQL 서버 연결 시도. MySQL을 실행 중인 것으로 가정합니다. 기본 설정된 서버(비밀번호 없는 사용자 "root") */ $mysqli = new mysqli("localhost", "root", "", "demo"); //연결 확인 if($mysqli === false){ die("에러: 연결할 수 없음. ". $mysqli->connect_error); } //시도하여 SELECT 쿼리 실행을 ORDER BY 문으로 선택 $sql = "SELECT * FROM persons ORDER BY first_name"; if($result = $mysqli->query($sql)){ echo "<table>";->num_rows > 0){ echo "<th>first_name< echo "<td>" . $row['first_name'] . "< echo "<th>last_name</>fetch()){ echo "<th>email</>fetch()){ th>";/>fetch()){ while($row = $result/>fetch()){ 결과 집합을 해제합니다/table>"; echo "<tr>";->fetch_array()){ echo "<td>" . $row['first_name'] . "< echo "<td>" . $row['last_name'] . "</echo "< echo "<td>" . $row['email'] . "</echo "< td>";/echo "< tr>";/echo "< 결과 집합을 해제합니다/table>"; } 결과 집합을 해제합니다/unset($result); // else{ $result->free(); echo "존재하지 않는 기록이 있습니다."; catch(PDOException $e){ } echo "존재하지 않는 기록이 있습니다."; echo "에러: 실행할 수 없음. ". $mysqli->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); } die("에러: 연결할 수 없음. ". $e->getMessage()); } //시도하여 쿼리 실행 선택 try{ $sql = "SELECT * FROM persons ORDER BY first_name"; if($result->rowCount() > 0){ echo "<table>";-echo "<th>id< echo "<th>first_name< echo "<td>" . $row['first_name'] . "< echo "<th>last_name</>fetch()){ echo "<th>email</>fetch()){ th>";/>fetch()){ while($row = $result/>fetch()){ 결과 집합을 해제합니다/table>"; echo "<tr>";-echo "<td>" . $row['id'] . "< echo "<td>" . $row['first_name'] . "< echo "<td>" . $row['last_name'] . "</echo "< echo "<td>" . $row['email'] . "</echo "< td>";/echo "< tr>";/echo "< 결과 집합을 해제합니다/table>"; } 결과 집합을 해제합니다/unset($result); //else{ } echo "존재하지 않는 기록이 있습니다."; catch(PDOException $e){ } } die("에러: $sql을 실행할 수 없습니다. ": $e);->getMessage()); } //연결을 종료합니다 unset($pdo); ?>
결과를 정렬한 후, 결과 집합은 다음과 같습니다:
+----+------------+-----------+----------------------+ | id | first_name | last_name | email | +----+------------+-----------+----------------------+ | 3 | Clark | Kent | [email protected] | | 5 | Harry | Potter | [email protected] | | 2 | John | Rambo | [email protected] | | 4 | John | Carter | [email protected] | | 1 | Peter | Parker | [email protected] | +----+------------+-----------+----------------------+
안내:기본적으로 ORDER BY 절은 결과를 오름차순으로 정렬합니다. 기록을 내림차순으로 정렬하려면 DESC 키워드를 사용할 수 있습니다.