【问题标题】:PDO - SQL COUNT not working in PHP functionPDO - SQL COUNT 在 PHP 函数中不起作用
【发布时间】:2015-09-22 11:34:24
【问题描述】:

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

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 上?

【问题讨论】:

  • $data 是否已填充?
  • @chris85,我假设是这样 - 我的其他 SQL 查询工作正常,并使用 PDO 显示在 count.php 上。这似乎是给我带来问题的 COUNT 查询。
  • 检查,试试print_r($data);。
  • @chris85,我刚刚尝试使用您建议的代码,看起来好像没有填充 $data。
  • 返回任何错误信息?查询是否直接在 DB 上工作?

标签: php mysql sql pdo


【解决方案1】:

未测试:

据我了解manual:

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

PDOStatement::fetchColumn()返回一列一(即下一个)行的数据。

所以在$data = $stmt-&gt;fetchColumn(); 之后,$data 应该已经包含该值。这意味着$user["returnCount"] = $data; 应该可以解决问题。

也许您想将获取数据的方式更改为PDOStatement::fetch。 那么您的代码将如下所示:

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

注意:此答案是指问题的第一个版本。

【讨论】:

  • @user2586348 看起来您至少还有一个错误。您应该使用调试器和错误报告,获取实际的错误消息并更新您的问题。
猜你喜欢
  • 1970-01-01
  • 2014-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-03
  • 2011-02-11
  • 1970-01-01
相关资源
最近更新 更多