TRY AND ERROR

気になったこと、勉強したこと、その他雑記など色々メモしていきます。。Sometimes these posts will be written in English.,

【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番目のカラムを取得します。