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

Сервис обмена электронных валют


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

#1 Kuchuluk

Kuchuluk
  • Пользователь
  • 315 сообщений
  • Репутация: 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

#2 kamchatniyoleg

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

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

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


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


#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 Ixman

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

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

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


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

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

echo $count;

  • 1

#5 Kuchuluk

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

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

 

Что выведет? 

 

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


  • 0

#6 Ixman

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

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

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


  • 0

#7 Kuchuluk

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

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


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


  • 0

#8 Ixman

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

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

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


  • 0

robot

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


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