質問: **質問経緯** ・PDOでレコード件数取得したい ・「SELECT COUNT(*) FROM テーブル名」で取得しようとするもうまくいかない ・しょうがないので、rowCount();で取得 --- **質問1** ・rowCount();って何ですか? ・「`SELECT COUNT(*) FROM テーブル名`」と何が違うのでしょうか? ・PDO独自のメソッド? ・「`SELECT COUNT(*) FROM テーブル名`」は、PDOでは使用できないのでしょうか? **質問2** ・rowCount();はステータスに対してしか使用できない? ・つまり、一度SQLを発行した後でしか駄目なのでしょうか?(SQLを最低2回書かなければいけない?)
回答: > > rowCount();って何ですか? > > > ここにあるとおり 「PDOStatement::rowCount() は 相当する PDOStatement オブジェクトによって実行された **直近の DELETE, INSERT, UPDATE 文によって作用した行数を返します**。」 です。 > > PDO独自のメソッド? > > > 上述のとおりPDOStatementクラスのメソッドです。 なので、 > > rowCount();はステータスに対してしか使用できない? > > つまり、一度SQLを発行した後でしか駄目なのでしょうか?(SQLを最低2回書かなければいけない?) > > > についてはどちらもYesです(用語は不正確ですが...)。 なお上記リンク先の注意書きに次のように書かれているとおり 「ほとんどのデータベースでは、PDOStatement::rowCount() は SELECT 文によって作用した行数を返しません」 ので、レコード件数の数え上げには適していません。 件数の数え上げ目的であれば普通に `select count(*)` が使えるはずですが、うまくいかないというのであれば何かが間違っています。