Я пытаюсь включить подготовленное заявление в другое подготовленное заявление - PullRequest
0 голосов
/ 04 ноября 2019

В данном заданном подготовленном утверждении он получает заголовок статьи. Когда он получает заголовок статьи, он также должен отправить эту переменную в другой подготовленный оператор, который затем находит количество просмотров по данной статье.

<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
$stmt = $con -> prepare('select tblposts.id as postid,tblposts.PostTitle as title,tblposts.PostUrl as postname, tblcategory.CategoryName as category,tblwritter.Writter as writter from tblposts left join tblcategory on tblcategory.id=tblposts.CategoryId left join tblwritter on tblwritter.WritterId=tblposts.WritterId where tblposts.Is_Active=?');
$cnt=1;
$stmt -> bind_param('i', $cnt);
$stmt -> execute();
$stmt -> store_result();
$stmt -> bind_result($postid,$title,$postname,$category,$writter);
?>

 <tr>
<?php while ($stmt->fetch()){?>
<td><b><?php echo $postname;?></b></td>
<td><?php echo $category?></td>
<td><?php echo $writter?></td>


<td>
<a href="edit-post.php?pid=<?php echo $postid;?>"><i class="fa fa-pencil" style="color: #29b6f6;"></i></a>
    &nbsp;<a href="manage-posts.php?pid=<?php echo$postid;?>&&action=del" onclick="return confirm('Do you reaaly want to delete ?')"> <i class="fa fa-trash-o" style="color: #f05050"></i></a>
</td>

<?php
$stmt = $con -> prepare('select COUNT(ip) FROM tblviews WHERE postname = ?');
$stmt -> bind_param('s', $postname);
$stmt -> execute();
$stmt -> store_result();
$stmt -> bind_result($ip);
?>
<?php while ($stmt->fetch()){?>
<td><?php echo $ip ?></td>
<?php } ?>

 </tr>


<?php }?>
                                            </tbody>
                                        </table>

Ожидаемые результаты этого кода - отправка имени сообщенияв подготовленное утверждение, которое затем называют количество просмотров в любой данной статье.

1 Ответ

0 голосов
/ 04 ноября 2019

Краткий ответ: вы перезаписываете $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>
&nbsp;<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...