Не работает if else
Когда условие 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
} ?>
Ответы (1 шт):
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-инъекций, запихивание данных напрямую в строку с запросом - плохая практика