PDOStatement类的对象无法转换为int

时间:2013-01-14 05:44:56

标签: php pdo

我的代码:

$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。

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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

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'];

答案 2 :(得分:0)

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

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

$pdo = new PDO('mysql:host=localhost; dbname=test', 'root', 'password');

$query = $pdo->query('SELECT COUNT(*) FROM myTable')->fetchAll();

$countQuery = count($query);