본문 바로가기
PHP

[PHP] mysqli 의 쿼리 결과 다루기

by 똑똑한 영장류 2012. 12. 12.


mysqli 에서 SELECT 쿼리를 실행한 후, 그 결과값을 뽑아 내는 방법을 간단히 보겠습니다.


$mysqli = new mysqli($DB['host'], $DB['id'], $DB['pw'], $DB['db']);
if (mysqli_connect_error()) {
    exit('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());
}


$q = "SELECT * FROM ap_member WHERE id='$user_id'";
$result = $mysqli->query( $q);


위처럼 루틴하게 mysqli 연결의 끈을 생성시키고, 쿼리를 실행시킵니다.

실행결과는 $result 에 담겨있지요.


$result->num_rows


위처럼 하면, 쿼리의 결과로 넘어온 행의 갯수를 알수 있습니다.



$row = $result->fetch_array(MYSQLI_ASSOC);


위처럼 하면, 넘어온 결과를 한 행씩 패치해서 $row 라는 배열에 담아낼 수 있습니다.


fetch_array()함수의 인자로 들어갈 수 있는 값이 3개가 있네요.


php.net 에서 설명하고 있는 차이점입니다.


/* numeric array */
$row $result->fetch_array(MYSQLI_NUM);
printf ("%s (%s)\n"$row[0], $row[1]);

/* associative array */
$row $result->fetch_array(MYSQLI_ASSOC);
printf ("%s (%s)\n"$row["Name"], $row["CountryCode"]);

/* associative and numeric array */
$row $result->fetch_array(MYSQLI_BOTH);
printf ("%s (%s)\n"$row[0], $row["CountryCode"]);


MYSQLI_NUM 으로 패치를 할 경우, 배열의 각 값에 접근하기 위해서는 숫자 첨자를 이용해야합니다.


우리의 예처럼 MYSQLI_ASSOC 로 패치할 경우에는 테이블의 필드명을 첨자로 해서 값에 접근할 수 있습니다.


이것, 저것 둘 다 이용하고 싶으면, MYSQLI_BOTH 를 함수 인자로 사용하면 됩니다.


$result->free();


쿼리의 결과를 이용하고 난 후에는 불필요한 리소스 낭비를 위해서 메모리를 해제 시켜줍니다.



'PHP' 카테고리의 다른 글

[PHP] isset(), unset()  (1) 2012.12.17
[PHP] session_start(), $_SESSION[]  (0) 2012.12.13
[PHP] header()  (0) 2012.12.12
[PHP] md5(), sha1()  (0) 2012.12.11
[PHP] mysqli 로 쿼리 날리기  (0) 2012.12.11

댓글