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 |
댓글