PDOStatement::rowCount
(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)
PDOStatement::rowCount — 直近の SQL ステートメントによって作用した行数を返す
説明
public PDOStatement::rowCount ( ) : int
PDOStatement::rowCount() は
相当する PDOStatement
オブジェクトによって実行された
直近の DELETE, INSERT, UPDATE 文によって作用した行数を返します。
関連する PDOStatement
によって実行された直近の
SQL ステートメントが
SELECT 文の場合、いくつかのデータベースは文によって返された
行数を返すかも知れません。しかしながら、
この振る舞いは全てのデータベースで保証されていません。
さまざまな場所で使用するアプリケーションでは、
これに頼ってはいけません。
注意:
このメソッドは SQLite ドライバの場合はあらゆる場合に "0" (ゼロ) を返します。 PostgreSQL ドライバの場合は ステートメント属性
PDO::ATTR_CURSOR
の設定がPDO::CURSOR_SCROLL
の場合にだけ "0" (ゼロ) を返します。
返り値
行の数を返します。
例
例1 削除された行数を返す
PDOStatement::rowCount() は DELETE, INSERT, UPDATE 文によって作用した行数を返します。
<?php/* FRUIT テーブルから全ての行を削除する */$del = $dbh->prepare('DELETE FROM fruit');$del->execute();/* 削除された行数を返す */print("Return number of rows that were deleted:\n");$count = $del->rowCount();print("Deleted $count rows.\n");?>
上の例の出力は、 たとえば以下のようになります。
Return number of rows that were deleted: Deleted 9 rows.
例2 SELECT 文によって返された行をカウントする
ほとんどのデータベースでは、PDOStatement::rowCount() は SELECT 文によって作用した行数を返しません。代わりに、 PDO::query() を使って 意図する SELECT 文として同様の述部を持つ SELECT COUNT(*) 文を発行し、PDOStatement::fetchColumn() を使って返される行数を取得することができます。
<?php$sql = "SELECT COUNT(*) FROM fruit WHERE calories > 100";$res = $conn->query($sql);$count = $res->fetchColumn();print "There are " . $count . " matching records.";
上の例の出力は、 たとえば以下のようになります。
There are 2 matching records.
参考
- PDOStatement::columnCount() - 結果セット中のカラム数を返す
- PDOStatement::fetchColumn() - 結果セットの次行から単一カラムを返す
- PDO::query() - SQL ステートメントを実行し、結果セットを PDOStatement オブジェクトとして返す