Phân biệt mysqli_fetch_array và mysqli_fetch_assoc trong PHP

Trong các câu lệnh PHP có nhiều lệnh nhìn qua có cảm giác chúng giống nhau hoàn toàn. Một trong số đó là mysqli_fetch_array và mysqli_fetch_assoc. Chúng đều có chức năng fetch dữ liệu từ câu query nhưng chắc chắn rằng sẽ có sự khác biệt.

Phân biệt mysqli_fetch_array và mysqli_fetch_assoc trong PHP

Vậy sẽ khác nhau giữa mysqli_fetch_array và mysqli_fetch_assoc là gì?

‘fetch’ trong tiếng Anh nghĩa là “đi tìm” vậy với câu lệnh này bạn hiểu nôm na là đi tìm dữ liệu đưa vào mảng.

mysqli_fetch_array: trả về một mảng có cả khóa số và chuỗi kết hợp (tên cột) , vì vậy ở đây bạn có thể sử dụng $row[‘column_name’] hoặc $row[0]

Hướng dẫn tạo Form đăng ký thêm thành viên vào Database: https://quachquynh.com/form-dang-ky-php/

Bạn sẽ chạy ví dụ bên dưới (Nếu trong cơ sở dữ liệu chưa có gì hãy đọc lại bài trên nhé!):

<?php
$link = mysqli_connect('localhost', 'root', '', 'data') or die(mysql_error());
if ($link) {
echo '<script language="javascript">alert("Kết nối thành công!");</script>';
}
else {
echo "Kết nối thất bại!";
}
$sql = "SELECT * FROM member";
$result = mysqli_query($link, $sql) or die(mysql_error());
while ($row = mysqli_fetch_array($result)) {
print $row[0];
print "\n";
print $row[1];
print "\n";
print $row[3];
print "\n";
print $row[4]."<br/>";
}
?>

Khi chạy bạn sẽ nhận được kết quả như sau:

database

mysqli_fetch_assoc: sẽ trả về mảng khóa được lập chỉ mục chuỗi và không có mảng số, do đó bạn sẽ không có tùy chọn ở đây bằng cách sử dụng các phím số như thế nào $row[0]

Cũng ví dụ trên bạn thay mysqli_fetch_array bằng mysqli_fetch_assoc xem có gì thay đổi không nhé!

database-1

Và kết quả mình nhận được là xuất hiện lỗi.

Kết luận là mysqli_fetch_assoc không thể sử dụng $row[0] để xuất dữ liệu.

Tiếp theo anh em thay đoạn

while ($row = mysqli_fetch_assoc($result)) {

print $row[0];
print "\n";
print $row[1];
print "\n";
print $row[3];
print "\n";
print $row[4]."<br/>";

}

Bằng

while ($row = mysqli_fetch_assoc($result)) {
print $row['id'];
print "\n";
print $row['username'];
print "\n";
print $row['email'];
print "\n";
print $row['phone']."<br/>";
}

Và kết quả là

database

Kết luận: mysqli_fetch_array dùng để xuất dữ liệu gồm các tên cột còn mysqli_fetch_assoc thì không làm được điều đó.

Qua bài viết này hi vọng bạn sẽ biết cách phân biệt giữa 2 cách fetch dữ liệu từ Database như thế nào rồi phải không nào.

Quách Quỳnh

Xin chào bạn mình là Quách Quỳnh! Chủ nhân của blog Quachquynh.com. Tại đây bạn sẽ tìm thấy những kiến thức về Wordpress, Seo và lập trình.

Leave a Reply

Your email address will not be published. Required fields are marked *