Lấy kết quả từ truy vấn SQL trong PHP
Ở bài học trước, chúng ta đã viết mã thử nghiệm. Tôi xin nhắc lại phần quan trọng của nó, thực hiện truy vấn đến cơ sở dữ liệu:
<?php
$query = 'SELECT * FROM users';
$res = mysqli_query($link, $query) or die(mysqli_error($link));
var_dump($res);
?>
Như bạn thấy, sau khi truy vấn đến cơ sở dữ liệu được thực hiện,
trong biến $res
sẽ chứa kết quả của hành động này. Tuy nhiên,
nó không được lưu ở dạng mà chúng ta cần
trong PHP, mà ở dạng mà cơ sở dữ liệu gửi về
cho chúng ta.
Để có được kết quả ở dạng quen thuộc,
cần sử dụng hàm
mysqli_fetch_assoc, hàm này trích xuất từ
kết quả ra một hàng dữ liệu.
Hãy thử:
<?php
$row = mysqli_fetch_assoc($res);
var_dump($row);
?>
Kết quả var_dump sẽ xuất ra một mảng
với nhân viên đầu tiên:
<?php
['id' => 1, 'name' => 'user1', 'age' => 23, 'salary' => 400]
?>
Đồng thời, từ biến $res, nhân viên đầu tiên
sẽ biến mất, và lệnh gọi mysqli_fetch_assoc tiếp theo
sẽ lấy ra nhân viên tiếp theo.
Và có thể gọi hàm của chúng ta như vậy cho
đến khi hết nhân viên. Ngay khi
điều này xảy ra, lệnh gọi hàm tiếp theo
sẽ trả về false.
Hãy thử:
<?php
$row1 = mysqli_fetch_assoc($res);
var_dump($row1); // nhân viên số 1
$row2 = mysqli_fetch_assoc($res);
var_dump($row2); // nhân viên số 2
$row3 = mysqli_fetch_assoc($res);
var_dump($row3); // nhân viên số 3
$row4 = mysqli_fetch_assoc($res);
var_dump($row4); // nhân viên số 4
$row5 = mysqli_fetch_assoc($res);
var_dump($row5); // nhân viên số 5
$row6 = mysqli_fetch_assoc($res);
var_dump($row6); // nhân viên số 6
$row7 = mysqli_fetch_assoc($res);
var_dump($row7); // sẽ xuất NULL - đã hết nhân viên
?>