Это очень хороший вопрос.
Ответ на него -
никак не использовать.
Да, в mysqli действительно есть специальная функция, которая может сказать, какое количество строк вернул запрос SELECT.
Традиционно употребляется в двух случаях:
а) когда это не нужно
б) когда приводит к катастрофическим последствиям
Первый вариант - это когда мы хотим узнать, вернул ли запрос хоть какие-то данные, или нет. Но на этот случай у нас есть
сами данные. Зачем отдельно запрашивать их количество, если мы все равно будем эти данные получать в переменную, которую потом и можно будет использовать чтобы узнать, вернул ли запрос что-нибудь или нет.
Второй вариант - если эта функция используется чтобы посчитать, сколько строк лежит в БД. В таком варианте это будет откровенное вредительство, поскольку данных может быть
очень много, и все эти данные БД должна сначала получить у себя, а потом отправить в РНР. Заняв всю доступную память или даже вызвав фатальную ошибку нехватки памяти.
Правильным решением этой задачи будет сделать запрос вида
SELECT COUNT(*) FROM ...
. В этом случае БД сама внутри себя посчитает количество строк (очень быстро) и вернёт только одно число, которое не занимает оперативную память вообще.
Вот и получается, что функция
mysqli_num_rows()
является либо вредной, либо бесполезной
В данном случае надо
сначала получить записи из БД
// БЕЗОПАСНО выполняем запрос
$stmt = $link->prepare("SELECT * FROM comments WHERE art_id = ?");
$stmt->bind_param("s", $note_id);
$stmt->execute();
// получаем данные
$result = $stmt->get_result();
$comments = $result->fetch_all(MYSQLI_ASSOC);
?>
А после этого уже их выводить
<?php if ($comments): ?>
<?php foreach ($comments as $row): ?>
<?=$row['comment']?><br>
<?php endforeach ?>
<?php else: ?>
Эту запись еще никто не комментировал
<?php endif ?>
Как видно,
никакой mysqli_num_rows нам не понадобилось