Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

PHP 스크립트에서 ORDER BY 절을 사용해 MySQL 테이블 데이터를 정렬하는 방법

PHP에서는 mysql_query() 함수 안에 SQL의 ORDER BY 절 문법을 그대로 사용할 수 있습니다. 이 함수는 SQL 명령을 실행하는 역할을 하며, 실행된 쿼리의 결과는 mysql_fetch_array() 함수를 통해 한 행씩 가져와 화면에 출력할 수 있습니다.

즉, 데이터베이스에서 특정 컬럼을 기준으로 오름차순(ASC) 또는 내림차순(DESC)으로 정렬된 데이터가 필요할 때, 별도의 PHP 로직 없이 SQL 쿼리 자체에서 정렬을 처리하면 됩니다.

예제 코드

다음은 tutorials_tbl 테이블의 데이터를 tutorial_author(작성자) 컬럼 기준으로 내림차순 정렬하여 조회하는 PHP 스크립트입니다.

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);

   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
   $sql = 'SELECT tutorial_id, tutorial_title,
      tutorial_author, submission_date
      FROM tutorials_tbl
      ORDER BY tutorial_author DESC';

   mysql_select_db('TUTORIALS');
   $retval = mysql_query( $sql, $conn );

   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }

   while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
      echo "Tutorial ID :{$row['tutorial_id']} <br> ".
         "Title: {$row['tutorial_title']} <br> ".
         "Author: {$row['tutorial_author']} <br> ".
         "Submission Date : {$row['submission_date']} <br> ".
         "--------------------------------<br>";
    }
   echo "Fetched data successfully\n";
   mysql_close($conn);
?>

코드 동작 순서

1. 데이터베이스 연결: mysql_connect()로 호스트, 사용자명, 비밀번호를 이용해 MySQL 서버에 접속하며, 연결에 실패하면 die()로 에러 메시지와 함께 스크립트를 종료합니다.

2. 정렬 쿼리 작성: SELECT 문 마지막에 ORDER BY tutorial_author DESC를 추가하여 작성자 이름 기준 내림차순으로 데이터를 정렬하도록 지정합니다. 오름차순으로 정렬하려면 DESC 대신 ASC를 사용하거나 아예 생략하면 됩니다.

3. 쿼리 실행 및 결과 확인: mysql_query()로 쿼리를 실행하고, 실패 시 에러 메시지를 출력합니다.

4. 데이터 출력: while 루프와 mysql_fetch_array()를 사용해 결과 집합의 각 행을 연관 배열(MYSQL_ASSOC) 형태로 가져온 뒤, 튜토리얼 ID, 제목, 작성자, 제출일을 순서대로 출력합니다.

5. 연결 종료: 모든 처리가 끝나면 mysql_close()로 데이터베이스 연결을 닫습니다.

참고 사항

위 예제에 사용된 mysql_* 계열 함수(mysql_connect, mysql_query 등)는 PHP 5.5부터 공식적으로 지원이 중단(deprecated)되었으며, PHP 7부터는 완전히 제거되어 더 이상 사용할 수 없습니다. 최신 PHP 환경에서는 보안과 성능 면에서 우수한 mysqli 확장 또는 PDO(PHP Data Objects)를 사용하는 것이 권장됩니다. 특히 PDO는 prepared statement를 지원해 SQL 인젝션 공격을 효과적으로 방어할 수 있습니다.