我在一个网站上工作,我希望在其中使用 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
上?
最佳答案
未测试:
据我了解manual :
PDOStatement::fetchColumn() returns a single column in the next row of a result set.
PDOStatement::fetchColumn()
返回一行(即下)行的一列数据。
所以在 $data = $stmt->fetchColumn();
之后,$data
应该已经包含了值。这意味着 $user["returnCount"] = $data;
应该可以解决问题。
也许您想将获取数据的方式更改为 PDOStatement::fetch
.
那么您的代码将如下所示:
$data = $stmt->fetch(PDO::FETCH_ASSOC);
$user["returnCount"] = $data["returnCount"];
注意:此答案指的是问题的第一个版本。
关于php - PDO - SQL COUNT 在 PHP 函数中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31226913/