首页 > 解决方案 > mysqli_num_rows 生成无限量的数据

问题描述

所以,我会尽量用我的英语知识来解释它。我试图从我的数据库中计算数据,基本上 - 我有多少具有相同 ID 的字段。这是来自数据库的图像。

图片来自数据库

例如,在帖子中我有评论系统并且它有效,我有这个 PHP 代码来计算我有多少与评论和 id 相同的字段。这是代码:

    <?php
$revposid = $res['content_id'];
$pos="SELECT review FROM comments WHERE review='positive' and postid=$revposid";
$neg="SELECT review FROM comments WHERE review='negative' and postid=$revposid";
$neu="SELECT review FROM comments WHERE review='neutral' and postid=$revposid";
if ($result=mysqli_query($_db,$pos)){$rowcountpos=mysqli_num_rows($result);}
if ($result=mysqli_query($_db,$neg)){$rowcountneg=mysqli_num_rows($result);}
if ($result=mysqli_query($_db,$neu)){$rowcountneu=mysqli_num_rows($result);}
?>



<div class="reviews" id="reviews">
    <span class="good"><b class="fa fa-thumbs-up"></b><?php echo $rowcountpos ?></span> 
    <span class="neutral"><b class="icon-thumbs-up"></b><?php echo $rowcountneu ?></span> 
    <span class="bad"><b class="fa fa-thumbs-down"></b><?php echo $rowcountneg ?></span>
</div>

当我尝试使用相同的代码时

$revposid = $cont['content_id'];
        $pos="SELECT content_id FROM user_content_like WHERE content_id=$revposid";
        if ($result=mysqli_query($_db,$pos)){$rowcountpos=mysqli_num_rows($result);}

在我的另一个脚本中,我有喜欢的系统,它应该显示我所有的喜欢和喜欢的帖子的总喜欢但是当我使用它时它显示无限量的数据,我不知道为什么。这是完整的代码,我将不胜感激一些帮助或解释。

<?php $ususername = $_GET['user_username'];$sql = "SELECT * FROM user_details WHERE user_username='$ususername'";$usresult = mysqli_query($_db,$sql);?>
<?php if( ! mysqli_num_rows($usresult) ) {
            echo " Ooops? <br> <br>User <b>".$_GET["user_username"]."</b> doesn't exist.";
        } else {
            while($usrow = mysqli_fetch_array($usresult,MYSQLI_BOTH)) {?>







<?php


$current_user = $usrow['user_id'];
if ($_db->connect_error) {
    die("Connection failed: " . $_db->connect_error);
} 

$sql = "SELECT * FROM user_content_like WHERE user_id=$current_user ORDER BY date_added DESC;";
$result = $_db->query($sql);

if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$content_id = $row['content_id'];


$sql1 = "SELECT * FROM content WHERE content_id=$content_id";
$result1 = $_db->query($sql1);      

    if ($_SESSION['user_id'] == $usrow['user_id']) {$output = '
    <button type="button" class="unlike_button" onclick="unlike(this);" name="like_button" data-content_id="'.$row["content_id"].'" ><i class="fa fa-minus"></i></button>
    ';} else {
        $output = '';
    }


    while($cont = $result1->fetch_assoc()) {

        $revposid = $cont['content_id'];
        $pos="SELECT content_id FROM user_content_like WHERE content_id=$revposid";
        if ($result=mysqli_query($_db,$pos)){$rowcountpos=mysqli_num_rows($result);}

        echo '
        <div class="community-feed-thread"> 
            <div class="community-icon-thread"></div> 
            <div class="community-comments-thread">'.$output.'</div> 
                <a href="'.$cont["content_id"].'" class="community-title-thread"><h3>'.$cont["title"].'</h3>
                    <span class="likes-desc"> Total likes:  '.$rowcountpos.'</span>
                </a>

        </div>
        ';
    }
}}
    else {
        echo " hmmmmmmmmmmmm.<Br><br>". $usrow["user_username"]." doesn't like anything. ";
    }

$_db->close();
?> 

<?php }}?>

这就是我想要的样子

这是它的样子

标签: phpmysqli

解决方案


您对代码中的不同结果集重新使用相同的变量...

$result = $_db->query($sql);

if ($result=mysqli_query($_db,$pos))

您需要确保只使用一次变量名,否则它可能会在其他循环中产生副作用。


推荐阅读