如何访问封装在SQL函数count()中的提取对象属性


How to access the fetched object property that is encapsulated within the SQL function count()?

我有以下功能:

        public function count () {
            global $db;
            $query = "SELECT COUNT(post_id) FROM posts";
            $result = $db->select($query);
            return $result;
        }

然后链接到另一个功能:

    public function select($query) {
        $results = $this->connection->query($query);
        while ($obj = $results->fetch_object()) {
            $r[] = $obj;
        }
        if (!empty($r)) {
        return $r;
        } else {
            return false;
        }
    }

输出的形式是一个对象数组。

通常情况下,我可以访问该对象的属性来获得结果。

$result[0]->属性

但在这种情况下,属性被封装在函数count()中。我如何访问该物业?

我使用了一种变通方法,只需从查询中选择行数。但我仍然想知道如何通过COUNT()访问该属性。

        public function count () {
            global $db;
            $query = "SELECT * FROM posts";
            $result = $db->initiate_query($query)->num_rows;
            return $result;
        }
        public function initiate_query($query) {
        $result = $this->connection->query($query);
        return $result;
    }

提前谢谢你,

Robert

首先尝试在提取的对象上使用var_dump()。这应该会给你一些建议。我确实相信,在大多数DBMS引擎中,默认情况下它类似于$object->count

第二种选择(我在代码中确实更喜欢)是在COUNT() ed字段上使用别名:

SELECT COUNT(post_id) as tmp_value FROM posts

然后,您应该以预定义的别名状态访问它:$object->tmp_value

最后你应该得到这样的东西:

public function count(){
    global $db;
    $query = "SELECT COUNT(post_id) as tmp FROM posts";
    $result = $db->select($query);
    return $result[0]->tmp;
}