2017/09/18 - [PHP] - [PHP] DB에서 특정 행들만 가져오기(7) - DB에서 가져온 정보 출력하기 mysqli_fetch_row()에서 본 대로
mysqli_fetch_row() 는 다음과 같이 배열의 번호로 요소를 출력할 수 있다.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <?php $query = "SELECT * FROM user_data"; $result = mysqli_query($conn, $query); $row = mysqli_fetch_row($result); echo "<TABLE BORDER=1><TR>", "<TD>",$row[0],"</TD>", "<TD>",$row[1],"</TD>", "<TD>",$row[2],"</TD>", "<TD>",$row[3],"</TD>", "</TR></TABLE>" ?> </body> </html>
mysqli_fetch_assoc() 의 assoc은 연관배열associative array 의 약자로,
다음과 같이 필드명(열이름, 키값)을 통해 데이터를 호출할 수 있다.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <?php $query = "SELECT * FROM user_data"; $result = mysqli_query($conn, $query); $row = mysqli_fetch_assoc($result); echo "<TABLE BORDER=1><TR>", "<TD>",$row['log_num'],"</TD>", "<TD>",$row['user_id'],"</TD>", "<TD>",$row['date'],"</TD>", "<TD>",$row['product'],"</TD>", "</TR></TABLE>" ?> </body> </html>
mysqli_fetch_array() 는 두 방식 모두 사용할 수 있다.
즉 키값과 번호 중 아무 것이나 사용해도 무방하다.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <?php $query = "SELECT * FROM user_data"; $result = mysqli_query($conn, $query); $row = mysqli_fetch_array($result); echo "<TABLE BORDER=1><TR>", "<TD>",$row[0],"</TD>", "<TD>",$row['user_id'],"</TD>", "<TD>",$row['date'],"</TD>", "<TD>",$row[2],"</TD>", "</TR></TABLE>" ?> </body> </html>
다만 주의할 것이, mysqli_fetch_array 이 담고 있는 요소의 수는 원래 배열의 두 배가 될 수 있다.
다음과 같이 mysqli_fetch_row 와 mysqli_fetch_array 각각의 배열을 출력하라고 명령(print_r) 해 보자.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <?php $query = "SELECT * FROM user_data"; $result = mysqli_query($conn, $query); $row = mysqli_fetch_row($result); $result = mysqli_query($conn, $query); $arr = mysqli_fetch_array($result); print_r($row); echo "</br>"; print_r($arr); ?> </body> </html>
mysqli_fetch_row 는 필드명(키값)이 0, 1, 2, 3 이지만,
mysqli_fetch_array 는 필드명이 0, log_num, 1, user_id, 2, product, 3, date 와 같이 매겨져 있다.
표로 표현하면 다음과 같다.
그래서 mysqli_fetch_array()는 필드명과 번호로 둘 다 호출할 수 있는 것이다.
이렇게 요소의 수가 다른 것은 다음과 같이 while() 을 쓴다면 문제가 될 수 있다.
mysqli_fetch_row 는 요소의 개수가 4개이므로 count($row)를 사용하면 다음과 같이 결과가 나오지만
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <?php $query = "SELECT * FROM user_data"; $result = mysqli_query($conn, $query); $row = mysqli_fetch_row($result); $i = 0; echo "<TABLE border=1><TR>"; while($i<count($row)){ echo "<TD>",$row[$i],"</TD>"; $i = $i + 1; } echo "</TR></TABLE>"; ?> </body> </html>
mysqli_fetch_array 는 count($row) 를 사용할 경우 결과는 다음과 같다.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <?php $query = "SELECT * FROM user_data"; $result = mysqli_query($conn, $query); $row = mysqli_fetch_array($result); $i = 0; echo "<TABLE border=1><TR>"; while($i<count($row)){ echo "<TD>",$row[$i],"</TD>"; $i = $i + 1; } echo "</TR></TABLE>"; ?> </body> </html>
count($row) 는 4가 아니라 8이며,
while() 은 row[0] 부터 row[3] 까지는 값을 출력하다가 row[4] 부터 row[7] 까지는 에러를 출력하게 된다.
'PHP' 카테고리의 다른 글
[PHP] 바이너리 서치로 인덱스 필드값 찾기 (0) | 2018.05.15 |
---|---|
[PHP] 회원들의 재구매율 알아보기(4) - 완성 (0) | 2017.10.13 |
[PHP] 회원들의 재구매율 알아보기(3) - 날짜 계산하기 strtotime() (0) | 2017.09.26 |
[PHP] 회원들의 재구매율 알아보기(2) - 두 배열 비교하기 in_array() (0) | 2017.09.25 |
[PHP] 회원들의 재구매율 알아보기(1) - MySQL 컬럼(열)을 배열로 만들기 (0) | 2017.09.24 |
[PHP] DB에서 특정 행들만 가져오기(8) - DB 에서 열 이름 가져오기 (0) | 2017.09.19 |
[PHP] DB에서 특정 행들만 가져오기(7) - DB에서 가져온 정보 출력하기 mysqli_fetch_row() (0) | 2017.09.18 |
[PHP] DB에서 특정 행들만 가져오기(6) - 쿼리 작성하기 mysqli_query() (0) | 2017.09.17 |
[PHP] DB에서 특정 행들만 가져오기(5) - 변수를 바꾸어 문자열 출력 sprintf() (0) | 2017.09.14 |
[PHP] DB에서 특정 행들만 가져오기(4) - 반복문 while(){} (0) | 2017.09.13 |
댓글