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

PHP의 mysql_fetch_assoc() 함수로 MySQL 테이블의 모든 레코드 조회하기

MySQL 데이터베이스에서 테이블에 저장된 모든 레코드를 한 번에 확인하고 싶다면, PHP 스크립트와 mysql_fetch_assoc() 함수를 조합하면 손쉽게 구현할 수 있습니다. 이 함수는 결과 집합에서 한 행씩 가져와 연관 배열(associative array) 형태로 반환하기 때문에, 각 컬럼 이름을 키(key)로 사용해 값을 직관적으로 읽어올 수 있다는 장점이 있습니다.

예제 코드

아래 예제는 'Tutorials_tbl' 테이블에 저장된 모든 레코드를 mysql_fetch_assoc() 함수를 사용하는 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';

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

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

   while($row = mysql_fetch_assoc($retval)) {
      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')를 선택하고, SELECT 문으로 tutorials_tbl 테이블의 tutorial_id, tutorial_title, tutorial_author, submission_date 컬럼 값을 조회합니다.

3. while 루프로 레코드 출력

mysql_fetch_assoc()는 호출될 때마다 결과 집합에서 한 행씩 가져오며, 더 이상 가져올 행이 없으면 false를 반환합니다. 따라서 while 루프와 함께 사용하면 테이블의 모든 레코드를 순차적으로 읽어 각 컬럼 이름(키)을 기준으로 값을 출력할 수 있습니다.

참고: 최신 PHP 환경에서의 대안

mysql_* 계열 함수는 PHP 5.5부터 지원 중단(deprecated)되었고, PHP 7부터 완전히 제거되었습니다. 실무 환경에서는 동일한 기능을 제공하는 mysqli 또는 PDO 확장을 사용하는 것이 좋습니다. 예를 들어 위 코드를 mysqli 기반으로 변경하면 mysqli_connect(), mysqli_query(), 그리고 mysqli_fetch_assoc() 함수를 같은 방식으로 활용할 수 있습니다.