본문 바로가기

프로그래밍언어/php

PHP에서 mysql 사용 ( mysql_fetch_row / mysql_fetch_assoc / mysql_fetch_array)

PHP에서 mysql_query()를 통해 

데이터를 SELECT했을 때, 

mysql_query()에서 반환된 리소스를 

결과 테이블을 다루는 함수에 전달하여 

데이터에 접근할 수 있습니다.

데이터를 꺼내는 함수에는 

아래의 종류가 있습니다.

이 중 붉게 칠해진 세 개 함수

대해서만 알아보겠습니다.

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

 

데이터를 꺼내는 예제에서는 

공통적으로 아래의 테이블을 사용하겠습니다.

SEQ

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 ‘SEQ: ‘.$row[0];

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

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

    echo ‘<br />’;

}

?>

 

 

SEQ: 0   Name: 햄버거   Grade: A

SEQ: 1   Name: 피자   Grade: B

SEQ: 2   Name: 치킨   Grade: B

SEQ: 3   Name: 짜장면   Grade: C

SEQ4   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 ‘SEQ: ‘.$row[‘SEQ’];

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

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

    echo ‘<br />’;

}

?>

 

 

SEQ: 0   Name: 햄버거   Grade: A

SEQ: 1   Name: 피자   Grade: B

SEQ: 2   Name: 치킨   Grade: B

SEQ: 3   Name: 짜장면   Grade: C

SEQ: 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 ‘SEQ: ‘.$row[‘SEQ’];

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

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

    echo ‘<br />’;

}

?>

 

 

SEQ: 0   Name: 햄버거   Grade: A

SEQ: 1   Name: 피자   Grade: B

SEQ: 2   Name: 치킨   Grade: B

SEQ: 3   Name: 짜장면   Grade: C

SEQ: 4   Name: 보쌈   Grade: F