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

PHP mysql_fetch_array() 함수와 MYSQL_NUM 상수로 MySQL 테이블의 모든 데이터를 숫자 인덱스 배열로 가져오는 방법

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 옵션으로 같은 방식의 숫자 인덱스 배열을 얻을 수 있습니다.