PDO - SQL COUNT在PHP函数中不起作用

时间:2015-07-05 03:31:54

标签: php mysql sql pdo

我正在一个网站上工作,我希望使用SQL查询来计算登录用户ID在数据库表中显示的次数。为了实现这一点,我创建了一个包含SQL查询的PHP函数。

PHP功能:

function count_by_user_id() {
     global $conn, $counts;
     $stmt = $conn->prepare("SELECT COUNT(`user_id`) AS `returnCount` FROM `table` WHERE `user_id` = :id;");

     $stmt->execute([
         ":id" => $_SESSION["user_id"]
     ]);

     $data = $stmt->fetch(PDO::FETCH_ASSOC);    
     $counts["returnCount"] = $data["returnCount"];
}

返回的结果应存储在名为$counts["returnCount"]的变量中,然后显示在另一个名为count.php的页面上。

count.php

<div class="data"><?=htmlspecialchars($counts["returnCount"]); ?></div>

不幸的是,count.php上没有显示任何内容,我似乎找不到原因。

所以我的问题是,如何计算user_id table出现的次数,并在count.php上显示该结果?

1 个答案:

答案 0 :(得分:0)

未经测试:

据我了解manual

  

PDOStatement :: fetchColumn()会返回结果集的 next 行中的单个列。

PDOStatement::fetchColumn()返回一列中的一列数据(即 next )行。

因此,在$data = $stmt->fetchColumn();之后,$data应该包含该值。这意味着$user["returnCount"] = $data;应该做到这一点。

也许您想要将数据提取方式更改为PDOStatement::fetch。 然后你的代码看起来像这样:

$data = $stmt->fetch(PDO::FETCH_ASSOC);  
$user["returnCount"] = $data["returnCount"];

注意:此答案涉及问题的第一个版本。