Что должно быть в iCount если возвращается пустой результат

Здравствуйте, уважаемые знатоки.
Вопрос-загадка (по крайней мене для меня)

        if ($aRows=$this->oDb->selectPage($iCount,$sql,($iPage-1)*$iPerPage, $iPerPage)) {
            foreach ($aRows as $aRow) {
                $aTopics[]=$aRow['topic_id'];
            }
        }
        print $iCount;

Что должен вывести $iCount в таком код при условии что в $aRows возвращается пустой результат?

7 комментариев

avatar
$iCount это ведь входная переменная метода и в данном коде она не меняется. Так что то что в ней было то и выведет.
avatar
Блин, точно, вопрос снят :)
avatar
Если заглянуть в функцию:

function selectPage(&$total, $query)
    {
        $args = func_get_args();
        array_shift($args);
        $total = true;
        return $this->_query($args, $total);
    }

видно присвоение true и отдача ее в дальнейшую функцию, в которой:

// Count total number of rows if needed.
        if (is_array($result) && $total) {
            $this->_transformQuery($query, 'GET_TOTAL');
            $total = call_user_func_array(array(&$this, 'selectCell'), $query);
        }

и так далее…
Если дальше проследить, то $iCount при нулевом результате присваивается 0.
Вне зависимости от того, что в ней было до того.


Честно даже проверил, действительно 0.
avatar
Если дальше проследить, то $iCount при нулевом результате присваивается 0.
Вне зависимости от того, что в ней было до того.
Вот тут могу не согласится ибо у меня при пустом результате выводило $iCount = 1
avatar
0, там передача переменной по ссылке в объявлении метода.
kpoxas верно указал выше.
avatar
Если дальше проследить, то $iCount при нулевом результате присваивается 0.
Вне зависимости от того, что в ней было до того.
Провел еще ряд тестов. действительно подтверждаются Ваши слова.
avatar
Метод selectPage(...), требует переменную, в которую будет записано количество строк, этот метод сгенерирует вот такой вот код
SELECT SQL_CALC_FOUND_ROWS ...
. Само название метода намекает, что мы работаем с постраничным выводом и нам наверняка понадобится количество всех строк таблицы, подходящее под данное условие, поэтому такой sql.

Используя просто метод select(...) не будет возвращено количество строк.

kpoxas прав, будет 0 — полное число строк подходящее под условие.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.