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

发布于 2024-10-14 23:38:04 字数 594 浏览 2 评论 0原文

我正在从数据库表中选择一个帖子,并使用 getParam() 从 url 中获取 id。我想要做的是,当 url 中没有指定 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,并且当我执行 echo count($post) 时,它会显示超过 1 ID 有效并且实际选择了一行。

所以我的问题是,我应该如何检查使用指定的 id 选择了多少行? ($postid!)。

有什么建议吗?

I'm selecting a post from my DB table and I'm getting the id from the url with getParam(). What I want to do is, show an error message when there's no posts with the id specified in the url.

This is the query I have:

$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);

Problem is, when i do echo count($post) it shows 1 even when the id is invalid, and it shows more than 1 when the id is valid and a row was actually selected.

So my question is, how should I check how many rows were selected with the id specified? ($postid!).

Any suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

绝情姑娘 2024-10-21 23:38:04

如果没有结果 fetchRow 将返回 false,因此您可以直接测试结果,例如: if($post) { ... 这就是 count 返回 1 的原因,对除数组之外的任何内容调用 count 都会返回 1 (空变量除外)。请注意,这与 Db_Table 的 fetchRow 方法不同,后者返回 null。

If there are no results fetchRow will return false, so you can test directly on the result, like: if($post) { ... And this is the reason that count returns 1, calling count on anything other than an array returns 1 (except on a null variable). Note that this is different to the fetchRow method of Db_Table, that returs null.

傲影 2024-10-21 23:38:04

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

I think that you should change $post = $db->fetchRow($select); into $posts = $db->fetchAll($select);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文