检查是否使用Zend_Db_Select选择了任何行

时间:2011-01-28 01:17:50

标签: php zend-framework count zend-db-select

我正在从我的数据库表中选择一个帖子,并且我使用getParam()从URL获取id。我想要做的是,当没有在网址中指定了id的帖子时显示错误消息。

这是我的查询:

$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)时,即使id无效,它也显示1,当id有效且实际选择了一行时,它显示的值超过1。

所以我的问题是,如何检查选择了多少行并指定了id? ($帖子ID!)。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

如果没有结果,fetchRow将返回false,所以你可以直接测试结果,如:if($ post){...这就是count返回1的原因,调用count以外的任何东西数组返回1(null变量除外)。请注意,这与Db_Table的fetchRow方法不同,即returs null。

答案 1 :(得分:0)

我认为您应该将$post = $db->fetchRow($select);更改为$posts = $db->fetchAll($select);