▶의문점의 발생
왜 항상 mysqli_fetch_array를 써야하고, password 하나만 불러오는데도 mysqli_fetch_array를 번거롭게 해야하는 이유에 대해서 쉽게 납득이 되지 않았다. 도대체 mysqli_fetch_array, assoc, row는 무슨 역할을 하고 mysqli_query 문은 어떻게 데이터를 출력하고 mysqli_fetch문은 어떻게 데이터를 바꿔주는지 확인 해보기로 했다.
둘을 비교하기 위해 기존 로그인페이지에서 코드를 약간 변경해서 다음과 같이 구성했다.
<?php
...
$sql = "SELECT * FROM member WHERE jj_id = '$jj_id' ";
$result = mysqli_query($conn, $sql);
$jj = mysqli_fetch_array ($result);
var_dump($result);
echo "<br>";
var_dump($jj);
echo "<br>";
$sql = "SELECT jj_password FROM member WHERE jj_id = '$jj_id' ";
$result = mysqli_query($conn, $sql);
$jj_pw = mysqli_fetch_array ($result);
$password = $jj_pw['jj_password'];
var_dump($result);
echo "<br>";
var_dump($jj_pw);
echo "<br>";
var_dump($password);
/*
...(기존 뒷부분 주석처리)
*/
▶객체(object)?
객체(Object)는 객체지향 프로그래밍에서 등장하는 말이다. 객체를 설명할 때 많이 드는 예시로, 붕어빵틀(클래스)에서 찍어낸 결과물(객체)라고도 할 수 있는데, 다시말해 클래스의 메서드(method)와 함수에 따라 결정된 결과물이라고 할 수 있겠다. 객체지향 프로그래밍에 대해 설명할 때 자세히 알아보도록 하자.
▶sqli_query문의 결과
보면 데이터가 상당히 복잡하게 구성되어 있다. 안에 배열도 있으면서, 길이, 정보들의 행 수(num_rows) 등등 다양한 정보를 같이 출력해버린다. 그래서 sqli_fetch_array을 사용해서 array형태로 만들면 깔끔하게 내용물과 함께 정보를 사용하기도 수월하게 만들어주게 된다.
▶sqli_fetch_array문의 결과
복잡했던 sqli_query문의 데이터를 간단한 배열로 출력하는 것을 알 수가 있다. 쿼리문에서 내가 호출하는 열의 데이터를 불러와서 '배열'의 형태로 정리하는 것을 알 수가 있다. 호출하는 열의 수와는 관계없이 배열의 형태로 출력하기 때문에 호출한 배열에서 다시 숫자나 변수를 이용해서 해당 변수를 호출해야한다.
(순서를 정리하자면
1. sqli_query문에서 객체형식으로 뽑혀진 데이터를
2. sqli_fetch_array문으로 순수 배열형식으로 뽑아주고
3. 배열을 변수로 지정해줬다면, $array[0], $array['jj_password'] 이런식으로 사용할 데이터를 뽑아내줘야한다.)
▶SELECT password 와 SELECT *
다시 본론으로 돌아와서 password만 불러오는 경우, 데이터의 규모가 비교적 아주 작다. 하지만 쿼리문을 봤을 때, 여전히 복잡한 데이터의 형태이고, array형태로 변환할 필요가 있어보인다.
SELECT password문을 array로 변환한 결과 비밀번호에 대한 정보만 불러오는 반면, SELECT 문은 전체 데이터를 불러오는 차이가 있다. 이러한 결과를 볼 때, 처음 내가 품은 의문에 답을 하자면,
1. 왜 항상 mysqli_fetch_array를 써야하고,
-> 쿼리문으로 불러온 데이터는 그 상태로 쓰기가 용이하지 않기 때문이다.
2.password 하나만 불러오는데도 mysqli_fetch_array를 번거롭게 해야하는 이유
-> password 하나만 불러오더라도 쿼리문으로 불러온 데이터는 여전히 그 상태로 쓰기가 용이하지 않기 때문이다.
'웹 프로그래밍 > PHP' 카테고리의 다른 글
PHP 자료형 비교표 (0) | 2023.02.01 |
---|---|
[php] 세션, 쿠키 개념과 활용법 (0) | 2022.10.23 |
댓글