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() 함수를 같은 방식으로 활용할 수 있습니다.