PHP MySQL tìm nạp tất cả

PHP cung cấp một danh sách lớn các hàm MySQL để truy cập cơ sở dữ liệu từ giao diện người dùng. Trong số các chức năng đó, chúng ta sẽ thảo luận về một số chức năng được sử dụng để lấy dữ liệu từ cơ sở dữ liệu. Các chức năng như vậy khác với loại kết quả mà chúng dự kiến ​​sẽ trả về

Trong PHP, kết quả tìm nạp MySQL có thể được lấy bằng các chức năng sau. Tất cả các hàm này sẽ chỉ tìm nạp một hàng cho mỗi lệnh gọi hàm. Nếu được yêu cầu, chúng ta nên gọi các chức năng như vậy bằng một vòng lặp để nhận các kết quả tìm nạp MySQL tiếp theo theo từng hàng

  • mysqli_fetch_row()
  • mysqli_fetch_assoc()
  • mysqli_fetch_array()
  • mysqli_fetch_object()
  • mysqli_fetch_lengths()
  • mysqli_fetch_field()

mysqli_fetch_row()

Hàm này sẽ tìm nạp dữ liệu về một hàng mà con trỏ hàng hiện đang tồn tại. Sau khi tìm nạp toàn bộ chi tiết hàng, nó sẽ được trả về dưới dạng một mảng với các chỉ số số tương ứng với phần bù trường MySQL

Hàm mysqli_fetch_row() yêu cầu dữ liệu tài nguyên được trả về bằng cách thực hiện truy vấn phù hợp với hoạt động tìm nạp của MySQL. Nếu không tìm thấy kết quả cho truy vấn, thì mysqli_fetch_row() sẽ trả về NULL

Chúng ta hãy xem xét bảng Người dùng mà chúng ta đã lấy làm ví dụ khi xem về MySQL Left JOIN và MySQL Right JOIN. Và dữ liệu và cấu trúc bảng như sau

PHP MySQL tìm nạp tất cả

Chương trình PHP sau đây dùng để tìm nạp dữ liệu MySQL bằng mysqli_fetch_row(). Trước đó, các kết nối cơ sở dữ liệu được thực hiện với hai dòng đầu tiên như bình thường

";
print_r($row);
print "
";
?>

Chương trình này sẽ trả về giá trị của toàn bộ hàng đầu tiên do con trỏ hàng ở đầu. Như vậy kết quả xuất ra sẽ như hình bên dưới có thể kiểm tra chéo với bảng dữ liệu đã hiển thị

Array
(
[0] => 1
[1] => admin
[2] => admin123
[3] => student
)

Nếu chúng ta muốn lấy tất cả thông tin về hàng, chúng ta nên thực hiện quy trình tương tự theo cách đệ quy bằng cách lặp qua một vòng lặp cho đến khi kết thúc bản ghi. Ví dụ,

";
    print_r($row);
    print "
";
}
?>

mysqli_fetch_assoc()

Hàm này tương tự như mysqli_fetch_row(), ngoại trừ việc nó sẽ trả về một mảng thông tin hàng chứa các giá trị cột được lập chỉ mục với tên cột. Vì vậy, loại kết quả là một mảng kết hợp trong đó mỗi tên cột và giá trị của một hàng được liên kết với nhau dưới dạng cặp tên và giá trị

Hãy để chúng tôi thay thế mysqli_fetch_row() bằng mysqli_fetch_assoc() trong chương trình trên sẽ trả về mảng sau

Array
(
[user_id] => 1
[user_name] => admin
[password] => admin123
[user_type] => student
)

Bằng cách sử dụng kiểu tìm nạp MySQL này, chúng tôi có thể truy cập dữ liệu theo tên của nó thay vì phần bù của nó. Vì việc ghi nhớ thứ tự các trường là quá khó đối với một danh sách lớn các cột, nên việc truy cập theo tên trường rất dễ dàng và do đó chức năng này có thể được ưu tiên hơn trong trường hợp như vậy

mysqli_fetch_array()

Phương thức tìm nạp MySQL này trả về một mảng kết quả có cả hai chỉ số, nghĩa là phần bù trường và tên trường. Vì vậy, nó sẽ được sử dụng nhiều nhất bằng cách có cả hai tùy chọn lập chỉ mục

Không giống như hai hàm trên, mysqli_fetch_array() chấp nhận một đối số tùy chọn để chỉ định loại chỉ mục mảng kết quả và các giá trị có thể có của nó là,

  • MYSQLI_BOTH – Đây là giá trị mặc định sẽ được lấy nếu không có đối số thứ hai nào được cung cấp cho hàm này. Nó sẽ cung cấp một mảng kết quả với cả hai chỉ số
  • MYSQLI_NUM – ​​Với tùy chọn này, mysqli_fetch_array() sẽ trả về một mảng có chỉ số offset giống như mysqli_fetch_row()
  • MYSQLI_ASSOC – Với tùy chọn này, mysqli_fetch_array() sẽ trả về một mảng có chỉ số tên giống như mysqli_fetch_assoc()

Bằng cách thay thế mysqli_fetch_row() bằng mysqli_fetch_array(), mảng đầu ra sẽ là,

Array
(
    [0] => 1
    [user_id] => 1
    [1] => admin
    [user_name] => admin
    [2] => admin123
    [password] => admin123
    [3] => student
    [user_type] => student
)

mysqli_fetch_object()

hàm mysqli_fetch_object() sẽ trả về dữ liệu MySQL có cùng cấu trúc như được trả về bởi mysqli_fetch_assoc(), nhưng kiểu của nó thì khác. mysqli_fetch_object() trả về đối tượng trong khi mysqli_fetch_assoc() trả về mảng. Vì vậy, cách truy cập những dữ liệu này cũng sẽ khác nhau. Ví dụ: nếu chúng tôi được yêu cầu truy cập user_name, sau khi tìm nạp mảng, nó sẽ được thực hiện bởi,


Hoặc nếu không sau khi tìm nạp đối tượng, nó sẽ là,

user_name;
?>

mysqli_fetch_lengths()

Hàm PHP này được sử dụng để trả về độ dài chuỗi của từng giá trị cột của hàng được tìm nạp gần đây. Vì vậy, trước khi tính toán độ dài chuỗi, bất kỳ chức năng tìm nạp MySQL nào ở trên đều cần được gọi

Ví dụ: chương trình sau đây là tìm nạp dữ liệu một hàng bằng mysqli_fetch_object() và in mảng độ dài tương ứng ra trình duyệt

";
print_r($row);
print_r($student_length);
print "
";
?>

Và đầu ra là,

________số 8_______

Rõ ràng, mảng thuộc tính đối tượng và mảng độ dài được trả về như hình trên có thể được kiểm tra chéo theo cách thủ công để đảm bảo độ dài giá trị thuộc tính chính xác như mong đợi

mysqli_fetch_field()

Không giống như các chức năng trên, mysqli_fetch_field() dùng để lấy thông tin trường của bảng Cơ sở dữ liệu MySQL thay vì dữ liệu bản ghi. Và, chức năng này cũng tìm nạp một trường cho mỗi cuộc gọi và cần triển khai vòng lặp để nhận được nhiều trường hơn

Mảng thông tin này sẽ được trả về dưới dạng một đối tượng bao gồm các thuộc tính như tên bảng, tên trường, độ dài tối đa của trường, độ lệch cờ khóa chính, v.v. Ví dụ: chi tiết trường user_id của bảng Người dùng được trả về như sau