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://quynhweb.pro/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.

Related Posts

Namespace trong PHP

Namespace cho phép các lớp / hàm / hằng cùng tên được sử dụng trong các ngữ cảnh khác nhau mà không có bất kỳ xung đột…

Hàm str_split() trong PHP

Bài viết này chúng ta sẽ đi tìm hiểu về hàm str_split(). Một trong những hàm thường được dùng trong PHP. Vậy cách sử dụng str_split() như…

Tạo chức năng sửa xoá thành viên bằng PHP & MySQL

Với một số trang web để quản lý thành viên (user) dễ dàng trong phần quản trị admin bạn phải khởi tạo chức năng sửa xoá thành…

Hàm str_replace trong PHP

Hàm str_replace trong PHP là gì? Hàm str_replace() trong PHP là một hàm được sử dụng để thay thế tất cả các xuất hiện của một chuỗi…

laravel8-vews-1

Views trong Laravel 8

Trong chuỗi series hướng dẫn học Laravel thì Views cũng quan trọng không kém gì so với Controller hay Model. Vậy chúng ta sẽ làm thế nào…

Validate Form trong PHP

Mặc dù trình duyệt hỗ trợ JavaScript để xác thực người dùng cho website. Tuy nhiên nếu JavaScript bị lỗi hoặc tắt đi thì công việc này…