我有一个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];
}