繁体   English   中英

数组到字符串的转换错误?

[英]Array to string conversion error?

我正在使用PDO并尝试显示表中有多少用户,但是出现此错误:

Notice: Array to string conversion in C:\Users\admin.phtml on line 10 Array

然后在我的管理类中:

 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>

有人知道我在做什么错吗?

您应该尝试计算查询中的用户,如下所示:

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性能要好得多,原因有以下几个:

  • 您没有获取实际数据。 如果您的数据集很大,则必须通过套接字传输兆字节或千兆字节。 即使数据库位于同一台计算机上,这也不是一个好主意。
  • 您不将数据存储在PHP中。 使用fetchAll ,它将所有数据存储到PHP数组中,占用内存
  • MySQL引擎可能会使用优化来进一步加快处理速度(直接查询记录数)

要显示有意义的文本或使用此功能执行某些操作,您可以:

function CheckUsers() {
    $userCount = CountUsers();
    if($userCount == 0) {
        echo 'No users found';
    }else{
        echo $userCount . ' users found';
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM