Проверьте, были ли выбраны какие-либо строки с помощью Zend_Db_Select - PullRequest
0 голосов
/ 28 января 2011

Я выбираю сообщение из своей таблицы БД и получаю идентификатор из URL с помощью getParam (). Что я хочу сделать, так это показать сообщение об ошибке, когда нет записей с идентификатором, указанным в URL.

Это мой запрос:

$db = Zend_Registry::get('db');
$select = $db->select();
$select->from(array('p' => 'posts'))
       ->join(array('u' => 'users'), 'u.user_id = p.post_userid')
       ->where('p.post_id = ?', $postid);
$post = $db->fetchRow($select);

Проблема в том, что когда я делаю echo count($post), он показывает 1, даже когда идентификатор недействителен, и показывает больше 1, когда идентификатор действителен и строка фактически выбрана.

Итак, мой вопрос: как мне проверить, сколько строк было выбрано с указанным идентификатором? ($ Сообщения дан!).

Есть предложения?

Ответы [ 2 ]

1 голос
/ 28 января 2011

Если результатов нет, fetchRow вернет false, поэтому вы можете проверить непосредственно результат, например: if ($ post) {... И это причина того, что count возвращает 1, вызывая count для всего, кромемассив возвращает 1 (кроме нулевой переменной).Обратите внимание, что это отличается от метода fetchRow объекта Db_Table, который возвращает значение null.

0 голосов
/ 28 января 2011

Я думаю, что вы должны изменить $post = $db->fetchRow($select); на $posts = $db->fetchAll($select);

...