Bạn đang nhận được kết quả mong đợi. Nếu bạn có tập hợp kết quả a,b,c,d
, bạn đang bắt đầu bằng a
là một danh mục mẹ, vì vậy nó sẽ tua lại phần đầu của tập hợp và lặp lại qua a,b,c,d
một lần nữa dưới dạng các danh mục phụ. Bây giờ bạn đang ở cuối tập hợp nên cả hai vòng sẽ thoát ra vì không còn dữ liệu.
Những gì bạn có thể muốn làm là đọc tất cả dữ liệu vào một mảng PHP trước, sau đó lặp qua mảng đó và xây dựng một số loại cấu trúc cây. Bạn cũng có thể xây dựng cấu trúc cây của mình trực tiếp trong vòng lặp mysql_fetch.
Tùy thuộc vào những gì bạn đang cố gắng đạt được, cũng có nhiều cách tốt hơn để lưu trữ dữ liệu của bạn. Bạn nên đọc về cách lưu trữ cây và dữ liệu phân cấp trong SQL. Các tập hợp lồng nhau có thể là những gì bạn muốn.
Một điều khác:không sử dụng mysql_fetch_array
, sử dụng mysql_fetch_assoc
thay vì. Nếu không, bạn sẽ có các khóa số và khóa kết hợp và một mảng hàng chứa gấp đôi lượng dữ liệu cần có.