Перейти к содержимому



Пустая выборка после функции count

#1

Поделиться сообщением #1



Kuchuluk

Kuchuluk
  • Пользователь
  • 320 сообщений
  • Репутация: 5
0

Отправлено 15 Май 2014 - 13:17

делаю выборку комментариев из базы данных таким кодом

$sql = "SELECT * FROM `comments` WHERE `id` = {$id}";
$rs = mysql_query($sql);

$comments = array();
while ($row = mysql_fetch_assoc($rs))
{
	$comments[] = $row;
}

$count = count($comments);

if ($count == 0)
{
	$comments = "Комментариев нет";
	return $comments;
}
else
{
	return $comments;
}

и переменная $comments возвращается как пустой массив. Если убрать эту строчку $count = count($comments); тогда возвращается массив с комментариями как положено. Почему после функции count он пустой?


 

 

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Функция Count() брешет!
  2. Вывод по 10 записей в строку
  3. РЕШЕНИЯ задач на PHP для начинающих
  4. Ничего не выводится после вызова метода
  5. Посчитать количество статей в категории

#2

Поделиться сообщением #2



kamchatniyoleg

kamchatniyoleg
  • Пользователь PRO
  • 1 178 сообщений
  • Репутация: 84

Отправлено 15 Май 2014 - 13:29

массив скорее всего многомерный и функция неправильно понимает как ей считать элементы . Поэтому косяк ! Вам нужно количество комментариев ? Если да то используйте COUNT() в mysql запросе !


  • 1
Сервис электронного информирования клиентов PostTrail.ru
Отслеживание посылок Почты России в автоматическом режиме! Лояльность клиента - прибыль магазина!


#3

Поделиться сообщением #3



alex159

alex159
  • Неактивные
  • 492 сообщений
  • Репутация: 32

Отправлено 15 Май 2014 - 14:34

$sql = "SELECT * FROM `comments` WHERE `id` = {$id}";
$rs = mysql_query($sql);

$comments = array();
while ($row = mysql_fetch_assoc($rs))
{
    $comments[] = $row;
}
print_r($comments);
$count = count($comments);

Что выведет? 


  • 0

#4

Поделиться сообщением #4



Ixman

Ixman
  • Пользователь PRO
  • 2 574 сообщений
  • Репутация: 603

Отправлено 15 Май 2014 - 14:40

Да хотелось бы услышать вам именно подсчёт нужен или нет. И в коде очень много лишнего, всё можно сделать намного проще


Самый простой вариант подсчёта будет таким

$count = mysql_num_rows(mysql_query("SELECT `id` FROM `comments` WHERE `id` = {$id}"));

echo $count;

  • 1


#5

Поделиться сообщением #5



Kuchuluk

Kuchuluk
    Topic Starter
  • Пользователь
  • 320 сообщений
  • Репутация: 5

Отправлено 15 Май 2014 - 14:42

 

Что выведет? 

 

количество комментариев выводит правильно. Именно почему то после этой функции массив становится пустым


  • 0

#6

Поделиться сообщением #6



Ixman

Ixman
  • Пользователь PRO
  • 2 574 сообщений
  • Репутация: 603

Отправлено 15 Май 2014 - 14:43

И функция mysql_fetch_assoc и так возвращает массив, а таким вот методом $comments[] = $row; вы его делаете более сложным по структуре, и возможно из-за этого функция count не может посчитать


  • 0


#7

Поделиться сообщением #7



Kuchuluk

Kuchuluk
    Topic Starter
  • Пользователь
  • 320 сообщений
  • Репутация: 5

Отправлено 15 Май 2014 - 14:44


Ixman, я уже переделал с mysql_num_rows, но просто для себя на будущее хотел узнать, почему после функции count массив пустой. Может у них несовместимость какая то. Так то функция count количество записей правильно подсчитывает.


  • 0

#8

Поделиться сообщением #8



Ixman

Ixman
  • Пользователь PRO
  • 2 574 сообщений
  • Репутация: 603

Отправлено 15 Май 2014 - 14:49

По идеи должно быть всё нормально, почему массив пустой не могу сказать. Сам с таким не сталкивался


  • 0


robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru