Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

mysql_fetch_array và vòng lặp while trong php

Về cơ bản, bạn đang hiểu sai về cách những thứ này hoạt động.

"Mảng" trong mysql_fetch_array không phải là một mảng của tất cả các bản ghi, mà là một mảng dữ liệu trong bản ghi hiện tại.

Trong trường hợp của bạn, bạn chỉ tìm nạp một trường duy nhất, vì vậy mảng sẽ chỉ chứa một phần tử duy nhất (tức là $row[0] ), nhưng nguyên tắc giống nhau - đó là một mảng của bản ghi mà bạn vừa đọc.

Chỉ dữ liệu cho bản ghi hiện tại nằm trong mảng tại một thời điểm bất kỳ. Đó là những gì while vòng lặp dành cho; nó quay trở lại mọi lần tải từng bản ghi.

Nếu bạn muốn tạo một mảng chứa tất cả dữ liệu, bạn cần thực hiện như sau:

$fullData = array()
while($row = mysql_fetch_array($tableIndex) ){
    $fullData[] = $row[0];
}

Điều đó sẽ đưa tất cả dữ liệu bạn đang đọc vào một mảng lớn duy nhất, đó là những gì bạn đang mong đợi. Bây giờ bạn có thể làm những gì bạn muốn làm trong câu hỏi:

echo $fullData[0].'<br>';
echo $fullData[1].'<br>';
echo $fullData[2].'<br>';

Hy vọng điều đó sẽ hữu ích.

Ở đây cần chỉ ra rằng mysql_xxx() họ các chức năng bị loại bỏ và bị coi là lỗi thời. Nếu bạn chỉ đang học PHP (có vẻ như vậy), tôi thực sự khuyên bạn nên ngừng học các hàm này và học PDO thư viện thay thế. Nó hiện đại hơn và có nhiều tính năng mà mysql các chức năng không thể cung cấp. Ngoài ra, các phiên bản PHP trong tương lai sẽ xóa mysql hoàn toàn các chức năng, vì vậy bạn sẽ phải chuyển đổi vào một lúc nào đó - nó cũng có thể là ngay bây giờ, trong khi bạn vẫn đang học.

Ngoài ra (để giữ những thứ liên quan đến câu hỏi), thư viện PDO có một tính năng thực sự làm những gì bạn đang tìm kiếm trong một hàm duy nhất:PDO::fetchAll() . Sử dụng phương pháp này có nghĩa là bạn có thể tìm nạp tất cả dữ liệu vào một mảng lớn duy nhất trên một dòng mà không cần thực hiện vòng lặp while. Mã sẽ giống như sau:

$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
$result = $sth->fetchAll();

(ví dụ được lấy từ hướng dẫn sử dụng PHP cho PDO::fetchAll )



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lặp lại và nhận các giá trị duy nhất từ ​​JSON cho một số chỉ mục

  2. Thư viện MySQL C API cho iPhone

  3. Mysql count so với mysql SELECT, cái nào nhanh hơn?

  4. Ưu và nhược điểm của tên bảng có khoảng trắng

  5. Laravel Cột JSON truy vấn hùng hồn với Where In?