0

私のコード:

$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 ではありません。

4

3 に答える 3

2

実際、そのクエリは PDO ステートメントを返します。次に、そのステートメントを使用して、関心のあるアイテムを取得できます。

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

これにより、クエリからステートメントが取得され、最初の行 (このクエリからの唯一の行) が取得され、カウント $result[0] が $count という名前の変数に格納されます。

于 2013-01-14T05:55:38.277 に答える
1

問題は、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'];
于 2013-01-14T06:01:59.113 に答える