PHP에서 SQL 쿼리 결과 가져오기
이전 수업에서 테스트 코드를 작성했습니다. 데이터베이스에 쿼리를 실행하는 핵심 부분을 상기시켜 보겠습니다:
<?php
$query = 'SELECT * FROM users';
$res = mysqli_query($link, $query) or die(mysqli_error($link));
var_dump($res);
?>
보시다시피, 데이터베이스 쿼리가 실행된 후,
변수 $res에는 해당 동작의 결과가 담깁니다. 그러나
이 결과는 PHP에서 필요한 형태가 아니라,
데이터베이스가 보내준 형태로 담겨 있습니다.
우리에게 익숙한 형태로 결과를 얻기 위해서는,
결과로부터 한 행을 추출하는 함수
mysqli_fetch_assoc를 사용해야 합니다.
한번 시도해 보겠습니다:
<?php
$row = mysqli_fetch_assoc($res);
var_dump($row);
?>
결과적으로 var_dump는 첫 번째 직원에 대한
배열을 출력할 것입니다:
<?php
['id' => 1, 'name' => 'user1', 'age' => 23, 'salary' => 400]
?>
이때 변수 $res에서 첫 번째
직원 정보는 사라지며, 다음 번 mysqli_fetch_assoc
호출은 이미 다음 직원을 가져옵니다.
직원들이 다 소진될 때까지 이 함수를
계속 호출할 수 있습니다.
직원이 더 이상 없으면 다음 함수 호출은
false를 반환합니다.
한번 시도해 보겠습니다:
<?php
$row1 = mysqli_fetch_assoc($res);
var_dump($row1); // 직원 번호 1
$row2 = mysqli_fetch_assoc($res);
var_dump($row2); // 직원 번호 2
$row3 = mysqli_fetch_assoc($res);
var_dump($row3); // 직원 번호 3
$row4 = mysqli_fetch_assoc($res);
var_dump($row4); // 직원 번호 4
$row5 = mysqli_fetch_assoc($res);
var_dump($row5); // 직원 번호 5
$row6 = mysqli_fetch_assoc($res);
var_dump($row6); // 직원 번호 6
$row7 = mysqli_fetch_assoc($res);
var_dump($row7); // NULL 출력 - 직원이 더 이상 없음
?>