php pdo 在 mvc 中显示 rowCount

php pdo displaying rowCount in mvc

我正在使用一个新的 mvc 框架 (view here),我 运行 遇到了一个小问题。

我有一个名为“favourite”的 table,如下所示;

---------------------------
id    user_id    book_id
1      2          1777      
2      3          1887
3      2          1023
4      7          8776
5      2          8811
---------------------------

我正在尝试在他们的个人资料页面上显示特定收藏夹的数量(您好。您有 x 个收藏夹)。我觉得我误解了有关 mvc 结构的某些内容或某处存在语法问题?

在我的 showprofile 上,我没有任何错误,它只是在应该计数的地方空白。当我 运行 在 phpmyadmin 中查询时,我得到的结果是 3,这是正确的。

我读到 rowCount() 可能不可靠,所以我也尝试了 fetchColumn() 等变体。我需要使用第二个查询吗?

php/sql/mvc 的新手,如有任何建议,我们将不胜感激。

我的代码如下;

login_model.php(型号)

class LoginModel
{
    public function favouriteTotal()
    {
        $query = $this->db->prepare("SELECT COUNT(book_id) FROM favourite WHERE user_id = 2");
        $query->execute();
        $count = $query->rowCount()       
    }
}

showprofile.php(查看)

<div>
    Hello. Your have this number of favourites: 
           <?php echo $this->count ?> 
</div>

login.php(控制器)

class Login extends Controller
{
    function showProfile()
    {
        $login_model = $this->loadModel('Login');
        $this->view->count = $login_model->favouriteTotal();
        $this->view->render('login/showprofile');
    }
}

您的问题是您正在执行 COUNT 查询,而如果您想使用 rowCount 函数,您应该使用 SELECT 查询。

此查询将使您的 rowCount 函数起作用:

SELECT `book_id` FROM favourite WHERE user_id = 2

或者,您可以继续使用 COUNT 语句,但您需要从查询中获取第一个结果而不是行计数。