mysqli_num_rows генерирует неограниченное количество данных - PullRequest
0 голосов
/ 16 марта 2019

Итак, я постараюсь объяснить это настолько хорошо, насколько я могу, со своими знаниями по английскому языку.Я пытаюсь посчитать данные из моей базы данных, в основном - сколько полей у меня с одинаковым идентификатором.Вот изображение из базы данных.

Изображение из базы данных

Например, в сообщениях у меня есть система обзора, и она работает, у меня есть этот код PHP, чтобы подсчитать, сколько же полейУ меня есть с обзором и идентификатором.Вот код:

    <?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);}

в моем другом сценарии, у меня есть система like, она должна показывать все мои лайки и меньше лайковнравится пост, но когда я использую его, он показывает неограниченное количество данных, я понятия не имею, почему.Вот полный код, я был бы признателен за некоторую помощь или объяснение.

<?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 }}?>

вот как я хочу, чтобы это выглядело

Вот как это выглядит

1 Ответ

0 голосов
/ 16 марта 2019

Ваше повторное использование одной и той же переменной для разных наборов результатов в коде ...

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

и

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...