【PHP】PDOでselect件数を取得する
PDOを使ってDBから検索結果の件数を取得したい場合、
PHPの公式マニュアルでは、rowCount()というそれらしきメソッドがあります。
ただ、公式マニュアルによると「rowCount()はすべてのデータベースでうまく作用するとは限らない」とのこと。。。
そもそも、rowCount()はinsert、delete、updateの実行件数を取得することが目的で、select件数を取得するのは推奨されないっぽい。。
PDOStatement::rowCount() は 相当する PDOStatement オブジェクトによって実行された 直近の DELETE, INSERT, UPDATE 文によって作用した行数を返します。
じゃあどうするのかというと、countを取得するSQL文を書けば良いとのことでした。
$sql = 'select count(*) from userTable'; $stmt = $dbh->query($sql); echo $stmt->fetchColumn();
※PDOStatement::fetchColumn()は引数にindexを指定して単一カラムを取得することができますが、上記のように省略すると0番目のカラムを取得します。