12702


**質問経緯**  
・PDOでレコード件数取得したい  
・「SELECT COUNT(*) FROM テーブル名」で取得しようとするもうまくいかない  
・しょうがないので、rowCount();で取得

* * *

**質問1**  
・rowCount();って何ですか？  
・「`SELECT COUNT(*) FROM テーブル名`」と何が違うのでしょうか？  
・PDO独自のメソッド？  
・「`SELECT COUNT(*) FROM テーブル名`」は、PDOでは使用できないのでしょうか？

**質問2**  
・rowCount();はステータスに対してしか使用できない？  
・つまり、一度SQLを発行した後でしか駄目なのでしょうか？(SQLを最低2回書かなければいけない？)


CC BY-SA 3.0
2015-07-10T13:25:55.780
12261
2015-07-26T01:24:13.877
7886
question
php
PDO ／ SELECT COUNT(*) FROM テーブル名と、rowCount();の違い


> rowCount();って何ですか？

<http://php.net/manual/ja/pdostatement.rowcount.php>  
ここにあるとおり

「PDOStatement::rowCount() は 相当する PDOStatement オブジェクトによって実行された **直近の DELETE,
INSERT, UPDATE 文によって作用した行数を返します** 。」

です。

> PDO独自のメソッド？

上述のとおりPDOStatementクラスのメソッドです。  
なので、

> rowCount();はステータスに対してしか使用できない？  
>  つまり、一度SQLを発行した後でしか駄目なのでしょうか？(SQLを最低2回書かなければいけない？)

についてはどちらもYesです（用語は不正確ですが…）。

なお上記リンク先の注意書きに次のように書かれているとおり

「ほとんどのデータベースでは、PDOStatement::rowCount() は SELECT 文によって作用した行数を返しません」

ので、レコード件数の数え上げには適していません。

件数の数え上げ目的であれば普通に `select count(*)` が使えるはずですが、うまくいかないというのであれば何かが間違っています。


CC BY-SA 3.0
2015-07-25T19:41:33.517
12702
2015-07-26T01:24:13.877
2015-07-26T01:24:13.877
10492
10492
12261
answer