通过 PHP 返回 MySQL 计数


Return MySQL Count via PHP

我有一个PHP函数,看起来像这样:

function count_creatives() {
    global $db;
    $q = "SELECT COUNT(DISTINCT creative) FROM actions";
    return $db->query($q);
}

$db变量包含一个 PDO 对象,并且设置正确(在其他地方成功使用)。

当我尝试将此函数的结果分配给变量时,它只包含查询字符串(没有结果)。

我正在运行的代码:

$count = count_creatives();

echo $count;

输出:

PDOStatement Object ( [queryString] => SELECT COUNT(DISTINCT creative) FROM actions )

知道为什么我没有得到实际计数(例如 2、3、100)吗?

您从函数返回资源对象,而不是字段值。您需要获取结果,然后返回该结果。请使用以下内容:

function count_creatives() 
{
    global $db;
    $q = "SELECT COUNT(DISTINCT creative) AS `total` FROM actions";
    $result = $db->query($q);
    $actions = $result->fetchObject();
    return $actions->total;
}

PDO::query() 返回一个 PDOStatement 对象,或在失败时返回 FALSE。 你需要做这样的事情,

function count_creatives() {
    global $db;
    $q = "SELECT COUNT(DISTINCT creative) FROM actions";
    $query = $db->query($q);
    return $query->fetch(PDO::FETCH_NUM)[0];
}