PDOでSELECT文の結果行数を把握する方法です。
MySQLでPDOを使わない場合、mysql_num_rows()で簡単に把握できたのですが、PDOで似たような関数がありません。(泣)
PDOではrowCount() という関数があるのですが、
マニュアル等では、正しい行数を返すかはあやしいと記載されています。
PDOStatement::rowCount() は 相当する PDOStatement オブジェクトによって実行された 直近の DELETE, INSERT, UPDATE 文によって作用した行数を返します。SELECTはどうやら、結果が怪しいらしいのです・・・
クエリーのバッファーを使うことによって、結果を取得することができるようです。
(PHPとMySQLのバージョンにも左右されるので、下記ソースで試してみましょう。)
1 2 3 4 5 6 7 8 |
$dbh = new PDO($DSN , $DBUSER , $DBPASS); $dbh->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true); $sql = 'SELECT * FROM テーブル名 '; $stmt = $dbh->query($sql); $stmt->execute(); $count=$stmt->rowCount(); echo $count; |
なんで、こんな一番使うようなものが、用意されていないんだろう・・・。
調べるのに半日を費やした。
人気記事一覧
- MySQL 最大の値・最新の日付データを1つ抽出する方法(MAX)
- [CakePHP] XformHelperの使い方
- Linux: スワップファイル(swp)の削除方法
- HTMLのForm methodとactionについて
- PHPでカンマ区切りデータを配列に入れる方法 (explode)
- [エラー対処] failed to open stream: No such file or directory
- PHP5.1→PHP5.3へバージョンアップする方法(CentOS)
- [vsftp] FileZillaから接続できない場合の対処法
- [CSS]ブロック要素(div)の高さを、内部のfloat要素に合わせて自動調整する
- PHPでテキストを1行ずつ読み込む方法(file_get_contents,explode)