我有以下功能:
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;
}