类PDOStatement的对象不能转换为int


Object of class PDOStatement could not be converted to int

我的代码:

$pdo = new PDO('mysql:host=localhost; dbname=test', 'root', 'password');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->exec('SET NAMES "utf8"');
...
$count = $pdo->query('SELECT COUNT(*) FROM myTable');

我试图计算myTable中的所有记录并将该数字存储为$count。我怎样才能做到呢?

我得到这个消息:Object of class PDOStatement could not be converted to int。根据我的理解,它不是int。

实际上,该查询将返回一个PDO语句。然后,你可以使用该语句来获取感兴趣的项目。

$statement = $pdo->query('SELECT COUNT(*) FROM myTable');
$result = $statement->fetch();
$count = $result[0];

从查询中获取语句,然后获取第一行(该查询中唯一的一行),然后将计数$result[0]存储到一个名为$count的变量中。

事情是query函数返回您对语句的引用。来自PHP手册

Return Values
PDO::query() returns a PDOStatement object, or FALSE on failure.

为了获得一个特定的字段,使用如下

$result = $pdo->query('SELECT COUNT(*) total FROM myTable LIMIT 1');
$row = $result->fetch(PDO::FETCH_ASSOC);
$count = $row['total'];

对象PDO::fetachAll()的方法,返回一个数组;

和函数count(),接受混合参数并返回整数值。

$pdo = new PDO('mysql:host=localhost; dbname=test', 'root', 'password');
$query = $pdo->query('SELECT COUNT(*) FROM myTable')->fetchAll();
$countQuery = count($query);