Как подсчитать количество строк в таблице?

makis

Новичок
Как подсчитать количество строк в таблице?

Здравствуйте.
У меня проблема. Вроде бы дело пустяковое, но я уже 3 часа бъюсь над ним и не могу понять почему оно не работает.
Есть таблица filezzz. Вот она:


Хочу подсчитать количество строк в таблице, где section = 'girlz'.
Пишу такой код:
PHP:
$sql = "SELECT COUNT(section) FROM filezzz WHERE section = 'girlz'";
$girlz_count = $modx->db->query($sql);
$totalRows = count(mysql_fetch_array($girlz_count));
В итоге получаю, что рядов 2, а не 1. Как такое может быть?

Изменяю section:
PHP:
$sql = "SELECT COUNT(section) FROM filezzz WHERE section = 'common'";
$girlz_count = $modx->db->query($sql);
$totalRows = count(mysql_fetch_array($girlz_count));
Опять - двадцать пять. Выводит всё-равно 2. Хотя в таблице нет вообще упоминания common ни в одной строке.

Пробую использовать mysql_fetch_row вместо mysql_fetch_array. Результат аналогичен. Правда, в этом случае всегда результат рядов = 1 независимо от условия.

Даже вот такой код пробовал:
PHP:
$sql = $modx->db->select("section", "filezzz", "section='common'", "", "");
$common_count = count(mysql_fetch_array($sql));
Всё-равно не выходит. Выводит, что кол-во рядов = 1. Хотя должно быть 0.

Ничего уже в голову не лезет. Может подскажите в чём моя ошибка?
Спасибо за внимание.
 

zerkms

TDD infected
Команда форума
makis
посмотри что возвращает mysql_fetch_array (var_dump())
 

Sokil.Dmytro

Новичок
надо не колдовать а дампить непонятную вариаблу. Ты зачем count сунешь и в запрос и в код??

фетч_аррай выдает массив, который содержит значения с ключем - индексом и именем поля. кол-во рядов в результате запроса считается через mysql_num_rows, mysql_fetch_assoc выдает на выход массив с ключами - именами полей без индексов.
 

makis

Новичок
Пишу
PHP:
$sql = $modx->db->select("section", "filezzz", "section='common'", "", "");
$common_count = var_dump(count(mysql_fetch_array($sql)));
Получаю: int(1)

Что это может значить? :)
 

zeltais

Новичок
PHP:
$sql = "SELECT COUNT(section) FROM filezzz WHERE section = 'common'"; 
$girlz_count = $modx->db->query($sql); 
$rez = mysql_fetch_array($girlz_count);
$cnt=$rez["0"];
:rolleyes:
 

makis

Новичок
Sokil.Dmytro
А можно поподробнее?
Я использовал и mysql_num_rows тоже. Результат всё-равно не верен.

-~{}~ 08.07.07 14:03:

zeltais
Спасибо, сейчас попробую :)

-~{}~ 08.07.07 14:07:

zeltais
Спасибо!!! Всё работает. Только для меня остаётся неясным зачем нужна строка $cnt=$rez["0"];
Что она делает?
 

zeltais

Новичок
$rez["0"] первый индекс массива который вернулся после выполнения твоего запроса, в нём хранится значение count(section)
 

Фанат

oncle terrible
Команда форума
makis
неужели этот запрос - первый, который ты выполняешь в своем коде?
Неужели раньше ты ни разу не получал данные из запроса?
 

zerkms

TDD infected
Команда форума
*****
есть подозрение, что прошлые запросы делались методом имени Копи-Паста
а этот запрос в него чуток не вписался ;))
 

makis

Новичок
Фaнaт
Не, не первый :).
Просто раньше как-то не приходилось таким образом подсчитывать количество строк.

zerkms
Копи-паст рулит :)
Ну, а если честно, я пока не крутой программер, а новичок. Как и мой статус на этом форуме. Все мы когда-то начинаем. :)
 

Фанат

oncle terrible
Команда форума
а новичкам запрещено думать над тем, что они делают?
 

maxru

МИФИст
Просто раньше как-то не приходилось таким образом подсчитывать количество строк.
Интересно, каким же образом ты их раньше подсчитывал? Расскажи всем.
 
Сверху