sbh
@sbh

Почему $result->num_rows не выдает 0 результат?

На локальной машине все работает и на странице я вижу 0.
Заливая на хостинг скрипт перестает выдавать 0.
Интересная деталь, если добавить перед "echo $result->num_rows" вывод чего угодно другого, например "echo """ то 0 выдается. Так же результат выдается если $result->num_rows больше 0.

Кто сталкивался?
В чем проблема?

Обновление 1:
echo 0; так же ничего не выводит на хостинге, на локальном пк 0 выводится.

Обновление2:
Вот у парня такая же проблема
bytes.com/topic/php/answers/6918-echoing-integer-0-zero
Решение так и не нашли.

Обновление3:
Сапорт что-то сделал и мой тестовый скрипт стал выдавать 0.
А вот там где система должна выдавать результаты запроса и там где они 0-ые ничего не поменялось. Пустота.

Обновление4:
Какие-то странные странности вылазят.

НЕ работает
------
<?php
echo 0;
?>
------

Работает
------
<?php
echo 0;
?>

------

Работает (в строке echo 0; в конце пробел)
------
<?php
echo 0;
?>
------

Думаю что проблема у хостера. Общаюсь с ними, но что-то как-то все туго.
В общем в принципе это не ошибка PHP а какая-то кривизна хостера. Вопрос снимаю.
  • Вопрос задан
  • 1015 просмотров
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
mysqli_result::$num_rows
Поведение функции mysqli_num_rows() зависит от того, используется ли буферизованная или небуферизованная результирующая выборка. Для небуферизованной выборки mysqli_num_rows() не вернет правильное число рядов пока все ряды не будут получены и обработаны.

Лучше всего сразу запросить COUNT(*).
Можно использовать в query() параметр MYSQLI_STORE_RESULT или после запроса вызывать store_result(), но при этом все данные с сервера будут перенесены в оперативку и памяти может просто не хватить.
Ответ написан
FanatPHP
@FanatPHP
Чебуратор тега РНР
чудес не бывает.

ini_set('display_errors',1);
error_reporting(E_ALL);

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$dbLink = new mysqli($db_server, $db_username, $db_password, $db_name);

$result = $dbLink->query("SELECT * FROM data");
var_dump($result->num_rows, $result);

если про "вывод чего угодно" не померещилось, то тогда тупо попробовать
echo 0;
Может быть, mysqli здесь вообще не при чем, а ноль съедает какой-нибудь буфер

Но в любом случае, отладка никогда не делается через echo, а только через var_dump.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы