0

我有一个看起来像这样的 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)吗?

4

2 回答 2

1

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];
}
于 2013-10-30T14:22:23.350 回答
1

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

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

    return $actions->total;
}
于 2013-10-30T14:23:42.613 回答