반응형

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] 까지는 에러를 출력하게 된다.

 

 

 

 

출처 : lightblog.tistory.com/117

반응형

+ Recent posts