개발노트/웹개발

[PHP] MySQL 데이터 꺼내기

sBum.Seo 2013. 8. 31. 03:51

PHP에서 mysql_query()를 통해 데이터를 SELECT했을 때 mysql_query()에서 반환된 리소스를 결과 테이블을 다루는 함수에 전달하여 데이터에 접근할 수 있습니다.

데이터를 꺼내는 함수에는 아래의 종류가 있습니다.

이 중 붉게 칠해진 세 개 함수에 대해서만 알아보겠습니다.

  • mysql_fetch_field()
  • mysql_fetch_object()
  • mysql_fetch_row()
  • mysql_fetch_assoc()
  • mysql_fetch_array()

 

데이터를 꺼내는 예제에서는 공통적으로 아래의 ExampleTable 테이블을 사용하겠습니다.

ID

Name

Grade

0

김주혁

A

1

김산혜

B

2

차민혁

B

3

권혜민

C

4

송영훈

F

 

 

a. 공통점

mysql_fetch_row(), mysql_fetch_assoc(), mysql_fetch_array() 세 함수는 한 행에서 데이터를 읽습니다.

또한 데이터를 읽은 후 함수 내부의 포인터를 증가시켜 다시 호출될 때 다음 행을 읽을 수 있도록 합니다.

 

 

b. mysql_fetch_row( resource $result )

mysql_fetch_row()는 데이터를 0으로 시작하는 숫자형 인덱스 배열로 반환합니다.

인덱스 번호로만 데이터를 구분하기 때문에 가독성이 떨어지는 단점이 있습니다.

 

예제 및 출력

<?php

$result = mysql_query(‘SELECT * FROM ExampleTable’);

while($row = mysql_fetch_row($result)) {

    echo ‘ID: ‘.$row[0];

    echo ‘   Name: ‘.$row[1];

    echo ‘   Grade: ‘.$row[2];

    echo ‘<br />’;

}

?>

 

 

ID: 0   Name: 김주혁   Grade: A

ID: 1   Name: 김산혜   Grade: B

ID: 2   Name: 차민혁   Grade: B

ID: 3   Name: 권혜민   Grade: C

ID: 4   Name: 송영훈   Grade: F

 

 

c. mysql_fetch_assoc( resource $result )

mysql_fetch_assoc()는 데이터를 문자형 연관 배열로 반환합니다.

배열의 키 이름으로는 필드의 이름을 갖습니다.

필드의 이름은 대소문자를 구별합니다.

 

예제 및 출력

<?php

$result = mysql_query(‘SELECT * FROM ExampleTable’);

while($row = mysql_fetch_assoc($result)) {

    echo ‘ID: ‘.$row[‘ID’];

    echo ‘   Name: ‘.$row[‘Name’];

    echo ‘   Grade: ‘.$row[‘Grade’];

    echo ‘<br />’;

}

?>

 

 

ID: 0   Name: 김주혁   Grade: A

ID: 1   Name: 김산혜   Grade: B

ID: 2   Name: 차민혁   Grade: B

ID: 3   Name: 권혜민   Grade: C

ID: 4   Name: 송영훈   Grade: F

 

 

d. mysql_fetch_array( resource $result [, int $result_type ] )

mysql_fetch_array()$result_type의 값에 따라 반환될 배열의 형태가 다릅니다.

$result_type의 값으로는 아래와 같은 상수가 올 수 있으며, 기본값은 MYSQL_BOTH입니다.

  • MYSQL_NUM: 이 상수를 사용하면 숫자형 인덱스 배열을 반환합니다.  =  mysql_fetch_row()
  • MYSQL_ASSOC: 이 상수를 사용하면 문자형 연관 배열을 반환합니다.  =  mysql_fetch_assoc()
  • MYSQL_BOTH: 이 상수를 사용하면 인덱스 배열과 연관 배열을 동시에 반환합니다.

 

예제 및 출력

<?php

$result = mysql_query(‘SELECT * FROM ExampleTable’);

while($row = mysql_fetch_array($result, MYSQL_BOTH)) {

    echo ‘ID: ‘.$row[‘ID’];

    echo ‘   Name: ‘.$row[1];

    echo ‘   Grade: ‘.$row[‘Grade’];

    echo ‘<br />’;

}

?>

 

 

ID: 0   Name: 김주혁   Grade: A

ID: 1   Name: 김산혜   Grade: B

ID: 2   Name: 차민혁   Grade: B

ID: 3   Name: 권혜민   Grade: C

ID: 4   Name: 송영훈   Grade: F