Проблема в строке while($posts){
.
Вы пишете код, который говорит: «Продолжайте, пока кто-то не установит переменную posts в null или false», но затем вы никогда не коснетесь ее ... так что она будет работать вечно.
Обновление
Если бы вы взглянули на ваш запрос еще раз, похоже, вы запутались в том, как он должен работать. Вот как это должно выглядеть:
$result = mysqli_query($db, "SELECT * from tbl_bugresponse WHERE bugid = $id ORDER BY time");
...
$post = mysql_fetch_assoc($result); // fetch first row
while( $post ) { // will keep going until $post gets set to null or false
...
$post = mysql_fetch_assoc($result); // fetch next row and re-run the loop
}
Вы заметите, что вызов mysqli_query
выделен. mysqli_query
выполняет запрос к базе данных, а затем дает вам «дескриптор» списка строк, которые возвращаются из запроса. Это обычная путаница, так как в основном люди ожидают, что она даст им массив всех строк, а не «дескриптор».
Затем вам нужно позвонить mysql_fetch_assoc
, чтобы вывести первую строку из списка, что-то с ней сделать, а затем повторно несколько раз вызвать mysql_fetch_assoc
, чтобы получить следующую строку.
Когда заканчивается количество строк, mysql_fetch_assoc
вернет null
вместо правильной строки, так что вы можете проверить, когда вы закончили, и остановить цикл.