우리의 기본전략은 다음 SQL의 □ 안을 바꾸어 가며 SQL을 돌리는 것이다.
SELECT * FROM user_data WHERE log_num=□
□ 안에 들어가야 할 것은 1, 9, 23, 109, 125, 264, 359, 416, 484, 504, 545, 620, 636, 640, 643, 669, 689, 720, 725, 749 의 20가지 숫자다.
먼저 이 숫자들의 목록을 별도 파일로 만들어 두고, PHP 에서 그 파일을 읽어오도록 해 보자.
2017/09/08 - [SQL] - [SQL] DB에서 특정 행들만 가져오기(1) - "or"를 이용에서 나온대로
엑셀에서 이 목록을 세로로 배열한 후 메모장에 붙여넣어 TXT 파일을 만든다.
파일을 저장할 위치는 이전과 같다. (Bitnami 기준이며 폴더명 중간에 숫자는 다소 다를 수 있다)
C:\Bitnami\wampstack-5.6.31-0\apache2\htdocs
localhost 의 apache 서버 안에 넣어 두면 되겠다. 별도로 하위 폴더를 만들어 작업해도 된다.
이제 다시 PHP로 돌아가 보자. HTML 템플릿의 <BODY> 부분에 다음과 같이 PHP 작성을 위한 공간을 새로 만든다.
<?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 ?> </body> </html>
저장한 TXT 파일을 PHP에서 불러와 보자. file() 함수를 사용한다.
여기서는 list.txt 로 파일을 저장하였다.
$list = file("list.txt");
(가장 위의 접속정보는 가독성을 위해 생략 ㅡ 실제로는 적어 주어야 한다.)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <?php $list = file("list.txt"); ?> </body> </html>
file("list.txt")의 결과를 $list 변수에 넣어 주었다.
file() 함수는 list.txt 를 한 행씩 읽어와 배열로 만들어 $list 에 저장해 둘 것이다.
저장된 배열에서 요소를 호출하려면 변수에 대괄호를 붙여 다음과 같이 적으면 된다.
echo $list[0];
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <?php $list = file("list.txt"); echo $list[0]; ?> </body> </html>
$list 의 [0] 번째 요소를 출력(echo)하라는 명령이다.
내친김에 실행해 보자. PHP 는 아까의 폴더에 test.php 로 저장해 두었다.
브라우저의 주소창에 다음과 같이 입력하면 우리가 만든 파일을 호출할 수 있다.
http://localhost/test.php
1? 1이 뭘까?
아까 list.txt 에 넣은 요소들 중 첫 번째 요소다.
첫 번째 요소가 [0] 이 된다. 두 번째 요소는 [1]일 것이다. 호출해 보자.
echo $list[1];
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <?php $list = file("list.txt"); echo $list[1]; ?> </body> </html>
두 번째 요소인 9가 호출되었다.
이제 SQL의 □ 안에 담을 요소는 준비된 셈이다.
마지막으로 한 가지 처리가 더 필요하다. 다음과 같이 입력해 보자.
echo $list[1],$list[2],$list[3];
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <?php $list = file("list.txt"); echo $list[1],$list[2],$list[3]; ?> </body> </html>
출력 결과는 다음과 같다.
배열이 자료를 읽을 때 자동으로 뒤에 공백을 넣어 주고 있는 것이 보인다.
이렇게 출력할 때는 편하지만, 실제 SQL에 넣을 때는 다음과 공백을 포함하여 적는 셈이 되어 제대로 조회가 되지 않을 가능성이 있다.
SELECT * FROM user_data WHERE log_num='9 '
9 뒤에 공백이 들어 있는 것이 보인다.
그러니 공백 제거의 과정을 거쳐야겠다. 다음과 같이 rtrim() 함수를 사용한다.
$id = rtrim($id, "\r\n");
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <?php $list = file("list.txt"); $id = $list[0]; $id = rtrim($id, "\r\n"); ?> </body> </html>
$list 의 [0]번째 (첫번째) 값을 $id 에 넣고, 공백을 제거해 주었다.
실제로 이렇게 사용할 것은 아니지만, 개념은 동일하다. 다음 포스트에서 이어가 보자.
'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에서 특정 행들만 가져오기(6) - 쿼리 작성하기 mysqli_query() (0) | 2017.09.17 |
[PHP] DB에서 특정 행들만 가져오기(5) - 변수를 바꾸어 문자열 출력 sprintf() (0) | 2017.09.14 |
[PHP] DB에서 특정 행들만 가져오기(4) - 반복문 while(){} (0) | 2017.09.13 |
[PHP] DB에서 특정 행들만 가져오기(2) - PHP 로 MySQL DB 제어하기 (0) | 2017.09.11 |
댓글