Hàm mysqli_fetch_assoc[]
sẽ tìm và trả về một dòng kết quả của một truy vấn MySQL nào đó dưới dạng một mảng kết hợp.
Cú pháp
Cú pháp: mysqli_fetch_assoc[ $result];
Trong đó:
$result
là kết quả của truy vấn, là kết quả trả về của các hàm:mysqli_query[]
,mysqli_store_result[]
hoặcmysqli_use_result[]
.
Kết quả trả về
Hàm sẽ trả về mảng kết hợp chứa thông tin của hàng kết quả.
Ví dụ
Cách sử dụng hàm mysqli_fetch_assoc[]
:
Code
$con=mysqli_connect["localhost","my_user","my_password","my_db"]; // Check connection if [mysqli_connect_errno[]]{ echo "Failed to connect to MySQL: " . mysqli_connect_error[]; } $sql="SELECT Lastname,Age FROM Persons ORDER BY Lastname"; $result=mysqli_query[$con,$sql]; // Associative array $row=mysqli_fetch_assoc[$result]; printf ["%s [%s]\n",$row["Lastname"],$row["Age"]]; // Free result set mysqli_free_result[$result]; mysqli_close[$con];
Tham khảo: w3schools.com
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.
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: //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é!]:
Khi chạy bạn sẽ nhận được kết quả như sau:
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é!
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]."
"; }
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']."
"; }
Và kết quả là
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.