mysql_fetch_array() 함수에 두 번째 인수로 MYSQL_NUM 상수를 전달하면, 함수는 문자열 키가 아닌 숫자 인덱스(0부터 시작)를 가진 배열을 반환합니다. 즉, 첫 번째 컬럼은 $row[0], 두 번째 컬럼은 $row[1] 형태로 각 필드 값에 접근할 수 있습니다.
예제
아래 예제에서는 PHP 스크립트에서 mysql_fetch_array() 함수의 두 번째 인수로 MYSQL_NUM을 사용하여, 'Tutorials_tbl' 테이블에 저장된 모든 레코드를 숫자 인덱스 배열 형태로 가져오는 과정을 보여줍니다.
<?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_NUM)) {
echo "Tutorial ID :{$row[0]} <br> ".
"Title: {$row[1]} <br> ".
"Author: {$row[2]} <br> ".
"Submission Date : {$row[3]} <br> ".
"--------------------------------<br>";
}
echo "Fetched data successfully\n";
mysql_close($conn);
?>
코드 설명
mysql_connect()로 데이터베이스에 연결한 후, SELECT 쿼리를 실행하고 그 결과 리소스를 mysql_fetch_array()에 전달합니다. while 반복문은 결과셋의 마지막 행까지 한 행씩 배열로 가져오며, 이때 MYSQL_NUM 옵션 덕분에 각 컬럼 값을 숫자 인덱스($row[0] ~ $row[3])로 출력할 수 있습니다.
참고: 위 코드에서 사용된 mysql_* 계열 함수는 PHP 5.5부터 지원 중단(deprecated)되었으며, PHP 7부터 완전히 제거되었습니다. 실제 프로젝트에서는 동일한 기능을 제공하는 MySQLi(mysqli_fetch_array()) 또는 PDO 확장을 사용하는 것이 좋습니다. 두 확장 모두 MYSQLI_NUM / PDO::FETCH_NUM 옵션으로 같은 방식의 숫자 인덱스 배열을 얻을 수 있습니다.