티스토리 뷰

PHP&MySQL

PHP&MySQL 연동과 SELECT

루체도 2019. 9. 8. 01:21

테이블을 선택해서 데이터를 읽어오기 위해 MySQL Monitor에서 SELECT하면 보이는 테이블을

PHP에서도 접근을 할 수 있게 해보려고 합니다.

우선 select.php라는 파일을 새로 생성을 해서 아래와 같이 작성을 해줍시다.

<?php 
$conn = mysqli_connect('localhost', 'root', 'fncp30315', 'opentutorials');
$sql = "SELECT *FROM topic"; //SELECT문에서 가장 큰 위험성은 모든 데이터를 가져오는 것입니다. 그래서 맨뒤에 LIMIT 1000 이런식으로 걸어줘야합니다. 여기서는 언급만 하겠습니다
$result = mysqli_query($conn, $sql);
var_dump($result);
?>

제대로 연결이 되었는지 확인하고 싶은 마음에 $result 를 var_dump를 통해서 웹페이지에 출력을 해보면 이상한 것들이

뜨게 될 겁니다.

<select.php의 검사창>

결과값에 topic 테이블의 값이 들어있는 것이 아니라 다른 이상한 것들이 들어있다는 것을 확인을 했습니다.

mysqli_query의 속성을 제대로 파악을 해봐야 할 것 같습니다.

실패했을 때 false , 성공했을 때는 true를 반환하지만 이것을 쿼리로 반환을 받아서 출력을 했을 경우엔 

mysqli_result라는 오브젝트로 반환이 된다고 합니다.

<mysqli_result의 속성>

num_rows가 뭔지 클릭해서 들어가보면 결과의 갯수를 말하는 것이라고 합니다.

그래서 이것을 var_dump로 확인을 해보고 싶어서 코드를 바꿔봤습니다.

이렇게 나오는데 이것의 의미는 3개의 행이 테이블에 있었다. 라는 의미입니다.

이제부터는 실제로 데이터를 끌고 와서 php에서 활용을 해보겠습니다.

그러기 위해서는 php의 데이터 타입으로 전환하는 과정이 필요합니다.

 

mysqli_fetch_~~

 mysqli_fetch~~ 라고 불리는 것들이 바로 그러한 역할을 하는 함수입니다.

 fetch는 가져오다 라는 뜻입니다. mysqli 쿼리를 통해서 가져온 데이터를 php에서 사용하도록 전환해서 가져온다는

 의미입니다. 

첫번째 인자로 mysqli_result가 온다고 나와있습니다. 

그리고 예제를 확인해보니 mysqli_query로 얻어온 결과를 fetch_array의 첫번째 인자에 넣는 것을 확인할 수 있습니다.

이것의 결과값을 확인하고 싶어서 select.php로 돌아와서 print_r을 해봤습니다.

<select.php의 검사창>

배열이 return이 되어있으며 데이터 베이스 테이블의 첫번째 행만을 보여주고 있다는 것을 알 수 있습니다.

그리고 값이 두번씩 반복이 된다는 것을 알 수 있습니다. 자세히 보시면 첫번째는 그 값의 자리수가 나오고

두번째는 column 명이 나옵니다. 즉 이것을 통해서 데이터를 선택적으로 가져올 수 있다는 것을 알 수 있습니다.

 

table의 특정 값만을 가져와서 아래 처럼 구현이 가능해집니다

그 다음 궁금증은 하나의 행만을 가져오는 건 이렇게 하면 되는데

여러개의 행을 가져올 때는 어떻게 해야하는데 라는 궁금증이 생길 수도 있습니다.

우선 아래와 같이 코드를 나누었습니다.

mysqli_fetch의 또 다른 특징으로는 실행할때마다 result가 가리키는 query문의 결과를

하나씩 하나씩 배열로 리턴한다는 것입니다. 그래서 이것을 확인시켜 드리겠습니다.

이렇게 추가로 한개를 더 출력시키게 해주었습니다.

그랬더니 Orcle이 출력이 되는 것을 확인하실 수 있습니다. 그럼 계속  이렇게 반복해서 마지막까지 출력을 하면

무엇이 나오는지 궁금하시지 않나요? 그냥 아무것도 안나옵니다. NULL이 나오게 됩니다.

반복을 하면 그 다음의 row가 출력된다는 것을 보고 반복문을 사용하면 되지 않을까? 라는 생각을 하실겁니다.

그걸 하기 위해서는 몇가지 지식이 필요합니다. while.php를 새로 생성을 합니다.

PHP는 while문을 만나면 A를 먼저 실행시켜서 true가 나오면 B, C를 실행시킵니다

그리고 다시 첫번째 A로 돌아와서 true가 나오면 또 B,C를 실행합니다. 

이렇게 A가 false가 나올 때까지 반복을 합니다.

 

두번째로 알아야 할 것은 이렇게 하면 $a는 1004가 나오게 됩니다.

왜냐하면 대입연산자는 우항의 값을 좌항의 값으로 대입을 하기 때문입니다.

세번째로 알아야 할 것은 var_dump(NULL == false);를 하게 되면 true가 나옵니다

이게 무슨 뜻이냐면 비교연산자는 왼쪽의 NULL과 오른쪽의 false가 같다면 true가 나오게 되는 것입니다.

이말은 PHP에서 NULL은 false로 친다라는 말입니다.

 

그러면 이제 다시 select.php파일로 다시 돌아가서 while문을 적용시켜 봅시다.

이렇게 적용을 했더니 모든 행을 가져오는 것을 알 수가 있습니다

조건 $row = mysqli_fetch_array($result)가 true가 나오는 이유는 php에서는 false 나 NULL이 아닌 경우에는 true로 치기 때문입니다. 그럼 지금 조건이 참이되서 중괄호 안에 있는 코드가 실행이 되는 것입니다.

그래서 행의 끝까지 다 출력을 해준 후 다시 조건을 검색을 해보니 NULL값이 나오고 조건이 false가 되서

반복문이 종료되게 됩니다.

'PHP&MySQL' 카테고리의 다른 글

관계형데이터베이스의 도입  (0) 2019.09.17
보안 - filtering  (0) 2019.09.09
활용 - 글 생성  (0) 2019.09.07
PHP&MySQL mysqli_query! - DB에 데이터 추가하기!  (0) 2019.09.07
MySQL API 찾기  (0) 2019.09.07
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함