Не работает if else

Рейтинг: 0Ответов: 1Опубликовано: 01.06.2023

Когда условие IF true, ничего нету, хотя должен вывестись логин, а когда срабатывает else то выводится "Нет комментов!". Помогите(

<?php
require_once 'vendor/connect.php';

$video_id = $_GET['id'];

$comments = mysqli_query(
    $connect, 
    "SELECT * FROM `comments` WHERE  `video_id` = $video_id"
);

$test = mysqli_fetch_assoc($comments);

if (isset($test)) {

    while($row = $comments->fetch_assoc()) {

        $current_user_id = $row['user_id'];

        $user = mysqli_query(
            $connect, 
            "SELECT `login` FROM `users` WHERE `id` = $current_user_id"
        );
    
        while($row_user = $user->fetch_assoc()) { ?>
            <p><?php echo $row_user['login'];?></p> <?php
        }
    }
} else { ?>
    <p>Нет коммеентов!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!</p> <?php 
} ?>

Ответы

▲ 2Принят

mysqli_fetch_assoc это аналог $comments->fetch_assoc(), так что строка $test = mysqli_fetch_assoc($comments); не несет смысла, вы просто получаете в $test первый результат запроса, и в дальнейшем это может ломать логику внутри блока if.

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

$comments = mysqli_query(
    $connect, 
    "SELECT * FROM `comments` WHERE  `video_id` = $video_id"
);

$count = mysqli_num_rows($comments);

if ($count > 0) {
...

НО в данном варианте вообще нет смысла делать запросы в цикле (это плохо), весь код можно объединить в один запрос:

SELECT `users`.`login`
FROM `users`
JOIN `comments` ON `comments`.`user_id` = `users`.`id`
WHERE `comments`.`video_id` = ?

P.S. Используйте подготовленные выражения (https://www.w3schools.com/php/func_mysqli_prepare.asp) во избежание SQL-инъекций, запихивание данных напрямую в строку с запросом - плохая практика