Php 新闻评论数

Php 新闻评论数,php,mysql,comments,smarty,Php,Mysql,Comments,Smarty,我厌倦了在我的新闻评论系统中寻找解决方案。 我所拥有的。 我有两个不同的mysql表item id、title、category_id、details and comments id、item_id、comment 如果我有一条新闻,那么计数就可以了,如图中所示: 代码: 但如果我使用相同的代码类别视图,结果是: 如果我使用代码: $sqls = mysql_query("SELECT c.item_id, COUNT(c.comment) FROM comments c

我厌倦了在我的新闻评论系统中寻找解决方案。 我所拥有的。 我有两个不同的mysql表item id、title、category_id、details and comments id、item_id、comment 如果我有一条新闻,那么计数就可以了,如图中所示:

代码:

但如果我使用相同的代码类别视图,结果是:

如果我使用代码:

$sqls = mysql_query("SELECT c.item_id,
       COUNT(c.comment) 
FROM   comments c 
       RIGHT JOIN items i 
         ON c.item_id = i.id 
GROUP  BY c.item_id");
$comm = mysql_num_rows($sqls);

$smarty->assign('comm',$comm);
结果是:一些评论


如何才能查看类别并查看正确数量的评论?

试试这个例子。结果与下面的屏幕截图相同,但有一些背景颜色来区分差异。当然,您应该更改您自己的连接和布局

<?php
$db = new PDO('sqlite:news.db');//change to your own
$sql = $db->prepare("
    SELECT item.id, item.title, item.details, comments.comment, COUNT(comments.id) AS NumberOfComment
    FROM item LEFT JOIN comments ON item.id = comments.item_id
    GROUP BY item.id ORDER BY item.id");            
$sql->execute();
$row = $sql->fetchAll();
//get comment
$comment = $db->prepare("SELECT comment FROM comments WHERE item_id = ?");
foreach ($row as $rows){
    echo "<br>";
    echo "Title: ".$rows['title'];
    echo "<br>";
    echo "Details: ".$rows['details'];
    echo "<br>";
    echo "<i>".$rows['NumberOfComment']." comments </i>";
    echo "<br>";
    $comment->execute(array($rows['id']));
    $comments = $comment->fetchAll();
    echo '<div style="background-color:pink;">';
    foreach ($comments as $showcomment){
    echo $showcomment['comment'];
    echo "<br>";
    }
    echo "</div>";
    echo "<br>";    
}
?>
示例项目表

示例注释表

结果是


如果可以,你应该这样做。已在PHP7中删除。了解使用PDO的语句,并考虑使用PDCORE ID、ITEMID ID和“选择GeTrrRyyIdID、ItMySID、CurnTyTimeIDID”。请问输出结果是什么?输出结果:新闻ITEM1 - 1新闻ITEM2 - 14新闻ITEM1 - 12内部注释编号有没有解决您的问题?
<?php
$db = new PDO('sqlite:news.db');//change to your own
$sql = $db->prepare("
    SELECT item.id, item.title, item.details, comments.comment, COUNT(comments.id) AS NumberOfComment
    FROM item LEFT JOIN comments ON item.id = comments.item_id
    GROUP BY item.id ORDER BY item.id");            
$sql->execute();
$row = $sql->fetchAll();
//get comment
$comment = $db->prepare("SELECT comment FROM comments WHERE item_id = ?");
foreach ($row as $rows){
    echo "<br>";
    echo "Title: ".$rows['title'];
    echo "<br>";
    echo "Details: ".$rows['details'];
    echo "<br>";
    echo "<i>".$rows['NumberOfComment']." comments </i>";
    echo "<br>";
    $comment->execute(array($rows['id']));
    $comments = $comment->fetchAll();
    echo '<div style="background-color:pink;">';
    foreach ($comments as $showcomment){
    echo $showcomment['comment'];
    echo "<br>";
    }
    echo "</div>";
    echo "<br>";    
}
?>