Tôi đang cố gắng hiểu tại sao hàm fetch_assoc hoạt động theo cách đó. Tôi có đoạn mã sau đây:Hiểu fetch_assoc()
$results = $connectToDb->fetch("SELECT * FROM customer");
$resultsArray = $results->fetch_assoc();
print_r($resultsArray); //print_r 1
while($row = $results->fetch_assoc()){
print_r($row); //print_r 2
}
Truy vấn trả về 3 hàng từ một bảng. Tại sao print_r đầu tiên chỉ trả lại hàng đầu tiên của dữ liệu được truy vấn nhưng print_r thứ 2 trả về tất cả 3? Làm thế nào để đưa fetch_assoc vào một vòng lặp while cho nó thực hiện hành động nhiều hơn một lần? Tôi đọc rằng fetch_assoc trả về hoặc là một mảng kết hợp hoặc NULL nhưng tôi đang đấu tranh để hiểu làm thế nào trong khi vòng lặp "nói" fetch_assoc để lấy hàng tiếp theo, nếu điều đó có ý nghĩa?
Cảm ơn bạn.
Tại sao việc đặt thứ gì đó vào vòng lặp khiến một điều gì đó xảy ra nhiều lần? – Phylogenesis
Ý nghĩa của câu lệnh trong khi rất đơn giản. Nó báo cho PHP thi hành câu lệnh lồng nhau liên tục, miễn là biểu thức while đánh giá thành TRUE. Giá trị của biểu thức được kiểm tra mỗi lần ở đầu vòng lặp, vì vậy ngay cả khi giá trị này thay đổi trong khi thực hiện câu lệnh lồng nhau, thực thi sẽ không dừng cho đến khi kết thúc phép lặp (mỗi lần PHP chạy các câu lệnh trong vòng lặp là một lần lặp). Đôi khi, nếu biểu thức trong khi đánh giá thành FALSE ngay từ đầu, các câu lệnh lồng nhau sẽ không được chạy một lần. – Daan
http://php.net/manual/en/control-structures.while.php – RiggsFolly