参考サイト
上記サイトの参考箇所
基本的に,以下の方法に従います.
-
件数だけでなく結果セットも一緒に欲しい場合,
PDOStatement::fetchAll
メソッドで一気に配列として取得し,それに対してPHPのcount
関数を使う. -
件数だけが欲しい場合は,
SELECT COUNT(*) WHERE ...
といったクエリを発行し,その結果をPDOStatement::fetchColumn
メソッドで得る.
これらの方法が最も推奨されますが,他の方法が無いわけではありません.以下に補足説明を示します.但しこれらはMySQLやPostgreSQLについてのみ当てはまり,SQLiteには当てはまりません.
####バッファクエリ使用時
SELECT に対しても常に PDOStatement::rowCount
メソッドを使うことができる.
####非バッファクエリ使用時
PDOStatement::fetchAll
メソッドを実行した後,つまり全てのフェッチが終わった後であれば SELECT に対しても PDOStatement::rowCount
メソッドを使うことができる.
結果のフェッチを途中で中断したまま次のクエリ実行に移行するときは, PDOStatement::closeCursor
メソッドを使ってカーソルを閉じる必要がある.1つ目の結果セットをPDOStatementに保持したまま2つ目のSQLを実行することはできないので,その場合はあらかじめ PDOStatement::fetchAll
メソッドでデータを退避させておく必要がある.