我正在使用PDO并尝试显示表中有多少用户,但是我收到此错误:
Notice: Array to string conversion in C:\Users\admin.phtml on line 10 Array
然后在我的Admin类中:
public function CountUsers()
{
$query = "SELECT * FROM Users";
$statement = $this->_dbHandle->prepare($query);
// Then execute the query
$statement->execute();
// This will return the row from the database as an array
return $statement->fetchAll(PDO::FETCH_ASSOC);
}
然后在我的管理员控制器中,我有:
$Admin = new Admin();
$CountUsers = $Admin->CountUsers();
要显示结果,我在我的phtml中有这个:
<var><?php echo $CountUsers; ?></var>
有谁知道我做错了什么?
答案 0 :(得分:1)
您应该尝试计算查询中的用户,例如:
public function CountUsers() {
$query = "SELECT COUNT(1) FROM Users";
$statement = $this->_dbHandle->prepare($query);
if($statement->execute()) {
// This will return COUNT(1) field
return $statement->fetch(PDO::FETCH_NUM)[0];
}else{
return 0; // should the query fail, return 0
}
}
如果你想坚持用PHP计算(你不应该这样做),修改你的代码:
return count($statement->fetchAll(PDO::FETCH_ASSOC));
但是你不应该查询所有数据来计算和丢弃它。由于以下几个原因,使用SQL count
的性能要高得多:
fetchAll
时,它会将所有数据存储到PHP数组中,占用内存要显示有意义的文字,或使用此功能执行某些操作,您可以:
function CheckUsers() {
$userCount = CountUsers();
if($userCount == 0) {
echo 'No users found';
}else{
echo $userCount . ' users found';
}
}