Trang chủ » PHP » Hàm mysql_fetch_array trong PHP

Hàm mysql_fetch_array trong PHP

Hàm mysql_fetch_array trong PHP trả về kết quả truy vấn MYSQL dưới dạng mảng. Tham số truyền vào hàm này gồm 2 tham số: kết quả truy vấn của hàm và 1 tham số bắt buộc

Lưu ý: Hàm này đã không dùng được nữa trong PHP 5.5.0 và nó bị xóa trong bản PHP 7.0.00. Thay vào đó nên sử dụng hàm mở rộng MySQLi hoặc PDO_MySQL

Mô tả hàm mysql_fetch_array

mysql_fetch_array ( resource $result [, int $result_type = MYSQL_BOTH ] ) : array

Trả về 1 mảng tương ứng với hàng (row) đã tìm nạp trong bộ dữ liệu truyền vào bởi truy vấn trước đó. Thường sẽ là 1 mảng hỗn hợp.

Tham số truyền vào

  • $result: Kết quả trả về từ truy vấn hàm mysql_query(). Thường thì sẽ là 1 object  hoặc một array chứa các rows bên trong. Mỗi rows này sẽ tương ứng với 1 kết quả trả về bởi hàm mysql_fetch_array
  • $result_type: Chọn loại mảng sẽ được tìm nạp. Nó là một hằng số và có thể nhận các giá trị sau: MYSQL_ASSOC, MYSQL_NUM và MYSQL_BOTH.

Kết quả trả về

Trả về một mảng các chuỗi tương ứng với hàng đã tìm nạp hoặc FALSE nếu không còn hàng nào nữa. Loại mảng được trả về phụ thuộc vào cách định nghĩa với tham số truyền vào $result_type.

  1. Bằng cách sử dụng MYSQL_BOTH (mặc định), bạn sẽ nhận được một mảng có cả chỉ số liên kết và chỉ số tương ứng với các keys, tên cột dữ liệu hiện có.
  2. Sử dụng MYSQL_ASSOC, bạn chỉ nhận được các chỉ số liên kết (tương ứng với hàm mysql_fetch_assoc () )
  3. Sử dụng MYSQL_NUM, bạn chỉ nhận được các chỉ số tương ứng với các keys, tên cột dữ liệu hiện có. (tương ứng với hàm mysql_fetch_row () ).

Nếu hai hoặc nhiều cột của kết quả có cùng tên trường thì cột cuối cùng sẽ được ưu tiên. Để truy cập (các) cột khác có cùng tên, bạn phải sử dụng chỉ mục số của cột hoặc tạo bí danh cho cột. Đối với các cột bí danh, bạn không thể truy cập nội dung với tên cột ban đầu mà phải sử dụng bí danh.

Ví dụ về hàm mysql_fetch_array trong PHP

Truy vấn với tên cột bị trùng

SELECT table1.name AS cot1, table2.name AS cot2 FROM table1, table2

Đây là truy vấn lấy dữ liệu về cột có tên “name” ở bảng table1 và table2. Vì 2 cột này có tên trường giống nhau nên gán cho nó bí danh. Ở Table1 trường name gán cho nó là “cot1”, ở Table2 trường name gán cho nó là “cot2”. Nếu bạn không làm như vậy thì mặc định truy vấn sẽ trả về kết quả của cột cuối cùng “cot2” được truy vấn.

Hàm mysql_fetch_array() sử dụng với MYSQL_NUM

<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
    die("Không kết nối được với database: " . mysql_error());
mysql_select_db("mydb");
$result = mysql_query("SELECT id, name FROM mytable");
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
    printf("ID: %s  Name: %s", $row[0], $row[1]);  
}
mysql_free_result($result);
?>

Bạn có thể thấy hàm MYSQL_NUM trả về các keys bao gồm các số từ 0,1,2,…n

Hàm mysql_fetch_array() sử dụng với MYSQL_ASSOC

<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
    die("Không kết nối được với database: " . mysql_error());
mysql_select_db("mydb");
$result = mysql_query("SELECT id, name FROM mytable");
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    printf("ID: %s  Name: %s", $row["id"], $row["name"]);
}
mysql_free_result($result);
?>

Hàm này trả về các keys là các tên cột trong bảng truy vấn trả về

Hàm mysql_fetch_array() với tham số MYSQL_BOTH

<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
    die("Không kết nối được với database: " . mysql_error());
mysql_select_db("mydb");
$result = mysql_query("SELECT id, name FROM mytable");
while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
    printf ("ID: %s  Name: %s", $row[0], $row["name"]);
}
mysql_free_result($result);
?>

Lưu ý: Tên trường do hàm này trả về có phân biệt chữ hoa chữ thường.

Lưu ý: Hàm này đặt các trường NULL thành giá trị NULL của PHP.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *