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

PHP 스크립트로 MySQL 테이블의 모든 레코드 조회하고 출력하는 방법

PHP 스크립트로 MySQL 테이블의 모든 레코드 표시하기

MySQL 데이터베이스를 다루다 보면 테이블에 저장된 모든 레코드(행)를 한 번에 조회해서 화면에 출력해야 하는 경우가 자주 있습니다. 이 글에서는 PHP 스크립트를 사용해 'Tutorials_tbl'이라는 테이블의 전체 레코드를 가져오는 방법을 예제와 함께 살펴보겠습니다.

전체 레코드 조회 예제 코드

아래 예제는 mysql_query() 함수로 SELECT 쿼리를 실행한 뒤, mysql_fetch_array() 함수를 이용해 결과를 한 행씩 반복해서 가져오는 기본적인 방식을 보여줍니다.

<?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';

    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. 쿼리 실행: mysql_select_db()로 사용할 데이터베이스('TUTORIALS')를 선택한 후, mysql_query() 함수에 SELECT 문을 전달해 쿼리를 실행합니다.

3. 결과 출력: while 문과 mysql_fetch_array()를 조합해 결과셋의 마지막 행까지 한 줄씩 읽어오며, 각 레코드의 ID, 제목, 작성자, 등록일을 순서대로 출력합니다.

4. 연결 종료: 모든 처리가 끝나면 mysql_close() 함수로 데이터베이스 연결을 닫아 리소스를 반환합니다.

MYSQL_ASSOC 상수의 역할

위 예제에서 주목할 부분은 mysql_fetch_array() 함수의 두 번째 인자로 사용된 MYSQL_ASSOC 상수입니다. 이 상수를 지정하면 결과 행이 연관 배열(associative array) 형태로 반환됩니다.

연관 배열을 사용하면 인덱스 번호(0, 1, 2...) 대신 필드 이름을 그대로 키로 사용할 수 있습니다. 예를 들어 $row[0]처럼 접근하는 대신 $row['tutorial_title']처럼 의미가 명확한 이름으로 값을 읽을 수 있어, 코드의 가독성과 유지보수성이 크게 향상됩니다.

참고: 최신 PHP 환경에서는 mysqli 또는 PDO 사용 권장

예제에 사용된 mysql_* 계열 함수(mysql_connect, mysql_query 등)는 PHP 5.5부터 지원 중단(deprecated)되었으며, PHP 7부터는 완전히 제거되었습니다. 따라서 실제 프로젝트에서는 아래의 대안을 사용하는 것이 좋습니다.

- mysqli 확장: mysqli_connect(), mysqli_query(), mysqli_fetch_assoc() 등을 사용하며, 절차적 방식과 객체 지향 방식을 모두 지원합니다.

- PDO(PHP Data Objects): 여러 데이터베이스를 일관된 인터페이스로 다룰 수 있고, prepared statement를 통한 SQL 인젝션 방지에도 유리합니다.

기본 개념과 로직은 동일하기 때문에, 위 예제의 구조를 이해해 두면 mysqli나 PDO로 옮겨갈 때도 큰 어려움 없이 적용할 수 있습니다.