Краткий ответ: вы перезаписываете $stmt
внутри цикла.
Длинный ответ с советами: Этого можно избежать (или, по крайней мере, легче обнаружить), написав сначала весь свой php, а затем последний из всех, выпуская html (используя php только для итерации и подстановки переменных).
Еще лучше - поместить доступ к базе данных и бизнес-логику в отдельные классы (т. Е. Модели), и ваш взгляд попросит модель (или контроллер, в зависимости от вашей интерпретации MVC) предоставить необходимые данные.
У меня нет возможности проверить это, но вы должны иметь возможность использовать один запрос:
select
tblposts.id as postid,
tblposts.PostTitle as title,
tblposts.PostUrl as postname,
tblcategory.CategoryName as category,
tblwritter.Writter as writter,
COUNT(tblwritter.ip) as views
from tblposts
left join tblcategory on tblcategory.id=tblposts.CategoryId
left join tblwritter on tblwritter.WritterId=tblposts.WritterId
left join tblviews on tblviews.postname = tblposts.PostUrl'
where tblposts.Is_Active=?
group by tblposts.PostUrl, tblposts.id, tblposts.PostTitle, tblCategory.CategoryName, tblwritter.Writter
(Обратите внимание, MySQL может позволить вам обойтись только с именованием tblposts.PostUrl вгруппа по)
Таким образом, ваша страница может быть упрощена до чего-то вроде этого:
<?php
// do your query here
?>
<table class="table table-colored table-centered table-inverse m-0">
<thead>
<tr>
<th>Title</th>
<th>Category</th>
<th>Writer</th>
<th>Action</th>
<th>Views</th>
</tr>
</thead>
<tbody>
<?php while ($stmt->fetch()): ?>
<tr>
<td><b><?= $postname ?></b></td>
<td><?= $category ?></td>
<td><?= $writter?></td>
<td>
<a href="edit-post.php?pid=<?= $postid?>"><i class="fa fa-pencil" style="color: #29b6f6;"></i></a>
<a href="manage-posts.php?pid=<?=$postid?>&&action=del" onclick="return confirm('Do you reaaly want to delete ?')"> <i class="fa fa-trash-o" style="color: #f05050"></i></a>
</td>
<td><?= $views ?></td>
</tr>
<?php endwhile; ?>
</tbody>
</table>