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

Tại sao vòng lặp foreach của tôi không hoạt động như mong đợi?

mysqli_query() không trả về một mảng hoặc đối tượng mảng mà bạn có thể sử dụng với foreach (). Kiểu trả về của mysqli_query () là một tài nguyên. Bạn tìm nạp từ nó trong một vòng lặp, giống như giải pháp thứ hai của bạn.

Sẽ đơn giản hơn khi sử dụng while () thay vì for ():

$cast_list = mysqli_query($dblink, $sql);
while ($role = mysqli_fetch_assoc($cast_list)) {
    echo "<tr><td width='50%'>".$role['appeared_as']."</td>";
}

Vòng lặp sẽ tự động kết thúc khi hàng được tìm nạp là NULL ở cuối tập kết quả. Bạn không cần biết số hàng trước vòng lặp.

Nhận xét lại của bạn:

Sau khi tra cứu một số thông tin , Tôi phải thừa nhận rằng câu trả lời của tôi ở trên không hoàn toàn đúng. Hoặc không đúng với một số phiên bản PHP.

Trong PHP 5.4, một tài nguyên mysqli_result được thêm vào Iterator chức năng, bạn thực sự có thể sử dụng nó trong foreach() . Nhưng máy chủ của bạn dường như sử dụng phiên bản PHP cũ hơn.

Cách tốt nhất là phát triển trên cùng một phiên bản của tất cả phần mềm mà bạn sẽ triển khai, vì vậy bạn không bị bất ngờ như thế này.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CHỌN với các biến truy vấn không sử dụng INDEXes

  2. gọi một hàm thành viên thực thi () trên một đối tượng không phải

  3. Không thể xóa hoặc cập nhật hàng mẹ ConstraintViolationException

  4. chọn truy vấn và đếm dựa trên điều kiện

  5. PHP - Bảo mật các trang chỉ dành cho thành viên với hệ thống đăng nhập