PHP 에서 쿼리를 DB에 질의하는 함수는 mysqli_query() 가 담당한다.
DB에 접속해야 하므로 함수 안에는 접속 정보(이전에 $conn 에 저장해 두었던)와 쿼리, 두 가지를 입력해야 한다.
일단 mysqli_query() 에 $conn 과 함께 SELECT * FROM user_data 를 쿼리로 입력해 보자.
<?php $conn = mysqli_connect("localhost", "root", "123456789"); mysqli_select_db($conn, "test"); ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <?php $list = file("list.txt"); $result = mysqli_query($conn, "SELECT * FROM user_data"); $i = 0; while($i<count($list)){ $log = $list[$i]; $log = rtrim($log, "\r\n"); echo sprintf("SELECT * FROM user_data WHERE log_num='%d'", $log); echo "</br>"; $i = $i + 1; } ?> </body> </html>
mysqli_query() 함수에 쿼리를 입력하고, 결과를 $result 변수에 담았다. 말하자면 $result 안에 user_data 테이블이 담긴 셈.
하지만 이것을 바로 출력할 수는 없고, 한 행씩 배열로 불러와야 출력할 수 있다. 이를 위해 사용하는 함수가 mysqli_fetch_row() 다.
이전에 작업한 sprintf() 는 잠시 주석 // 처리하고 mysqli_fetch_row() 를 적어보자. 출력을 위해 echo도 적자.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <?php $list = file("list.txt"); $result = mysqli_query($conn, "SELECT * FROM user_data"); $row = mysqli_fetch_row($result); echo $row[0]; $i = 0; while($i<count($list)){ $log = $list[$i]; $log = rtrim($log, "\r\n"); // echo sprintf("SELECT * FROM user_data WHERE log_num='%d'", $log); echo "</br>"; $i = $i + 1; } ?> </body> </html>
결과는 다음과 같다.
1? 1이 뭘까?
1행 1열의 값, 즉 log_num 의 첫 번째 값이 되겠다.
프로세스는 이렇다.
mysqli_fetch_row() 함수에 의해 $result 에 있는 user_data 테이블 중 1행의 정보가 $row에 배열의 형태로 담긴다.
echo $row[0] 은 그 배열(1행의 요소들이 배열의 형태로 $row에 담겼다)의 1번째 요소 를 출력한다.
같은 코드를 세 번 반복해 보자.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <?php $list = file("list.txt"); $result = mysqli_query($conn, "SELECT * FROM user_data"); $row = mysqli_fetch_row($result); echo $row[0]; $row = mysqli_fetch_row($result); echo $row[0]; $row = mysqli_fetch_row($result); echo $row[0]; $i = 0; while($i<count($list)){ $log = $list[$i]; $log = rtrim($log, "\r\n"); // echo sprintf("SELECT * FROM user_data WHERE log_num='%d'", $log); echo "</br>"; $i = $i + 1; } ?> </body> </html>
결과는 다음과 같다.
mysqli_fetch_array() 는 처음 실행시 테이블의 1행을, 두 번째 실행시 테이블의 2행을 자동으로 가져온다.
1행을 가져와 1번째 요소를 반환하고
2행을 가져와 1번째 요소를 반환하고
3행을 가져와 1번째 요소를 반환한 것이 출력되고 있다.
그러므로 이 코드를 기존 while() 안에 넣으면 이렇게 되겠다.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <?php $list = file("list.txt"); $result = mysqli_query($conn, "SELECT * FROM user_data"); $i = 0; while($i<count($list)){ $log = $list[$i]; $log = rtrim($log, "\r\n"); $row = mysqli_fetch_row($result); echo $row[0]; // echo sprintf("SELECT * FROM user_data WHERE log_num='%d'", $log); echo "</br>"; $i = $i + 1; } ?> </body> </html>
결과는 다음과 같다.
i 는 0 부터 19 까지 증가하며 20번 반복했고, 그때마다 행을 가져와 첫 번째 요소를 출력했다.
우리는 첫 번째 요소뿐 아니라 모든 요소를 다 출력해야 하므로, 이렇게 적자.
echo $row[0], $row[1], $row[2], $row[3];
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <?php $list = file("list.txt"); $result = mysqli_query($conn, "SELECT * FROM user_data"); $i = 0; while($i<count($list)){ $log = $list[$i]; $log = rtrim($log, "\r\n"); $row = mysqli_fetch_row($result); echo $row[0], $row[1], $row[2], $row[3]; // echo sprintf("SELECT * FROM user_data WHERE log_num='%d'", $log); echo "</br>"; $i = $i + 1; } ?> </body> </html>
결과는 다음과 같다.
중간에 어떠한 구분자도 넣어주지 않아 열이 서로 붙었지만,
4열까지 모든 정보를 출력하고 있다.
일단 구분이 어려우니 아쉬운대로 | 를 넣어주자. 다음 포스트에서 표 모양으로 만들 것이다.
echo $row[0]," | ",$row[1]," | ",$row[2]," | ",$row[3];
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <?php $list = file("list.txt"); $result = mysqli_query($conn, "SELECT * FROM user_data"); $i = 0; while($i<count($list)){ $log = $list[$i]; $log = rtrim($log, "\r\n"); $row = mysqli_fetch_row($result); echo $row[0]," | ",$row[1]," | ",$row[2]," | ",$row[3]; // echo sprintf("SELECT * FROM user_data WHERE log_num='%d'", $log); echo "</br>"; $i = $i + 1; } ?> </body> </html>
결과는 다음과 같다.
만들어둔 쿼리를 빨리 질문하고 싶은데, 테이블을 가져와 원하는 모양으로 출력하는 것이 만만치 않다.
다음 포스트에서 테이블을 표 모양으로 출력하는 것에 대해 이어서 알아보자.
'PHP' 카테고리의 다른 글
[PHP] 회원들의 재구매율 알아보기(3) - 날짜 계산하기 strtotime() (0) | 2017.09.26 |
---|---|
[PHP] 회원들의 재구매율 알아보기(2) - 두 배열 비교하기 in_array() (0) | 2017.09.25 |
[PHP] 회원들의 재구매율 알아보기(1) - MySQL 컬럼(열)을 배열로 만들기 (0) | 2017.09.24 |
[PHP] mysqli_fetch_row, assoc, array 의 차이 (4) | 2017.09.20 |
[PHP] DB에서 특정 행들만 가져오기(8) - DB 에서 열 이름 가져오기 (0) | 2017.09.19 |
[PHP] DB에서 특정 행들만 가져오기(7) - DB에서 가져온 정보 출력하기 mysqli_fetch_row() (0) | 2017.09.18 |
[PHP] DB에서 특정 행들만 가져오기(5) - 변수를 바꾸어 문자열 출력 sprintf() (0) | 2017.09.14 |
[PHP] DB에서 특정 행들만 가져오기(4) - 반복문 while(){} (0) | 2017.09.13 |
[PHP] DB에서 특정 행들만 가져오기(3) - 목록 읽어오기 file() (0) | 2017.09.12 |
[PHP] DB에서 특정 행들만 가져오기(2) - PHP 로 MySQL DB 제어하기 (0) | 2017.09.11 |
댓글