PHP マニュアル
前のページ |  | 次のページ

# PDOStatement->rowCount()

(no version information, might be only in CVS)

PDOStatement->rowCount() -- 直近の SQL ステートメントによって作用した行数を返す

## 説明

class PDOStatement {
int rowCount ( void )
}

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

関連する `PDOStatement` によって実行された直近の SQL ステートメントが SELECT 文の場合、いくつかのデータベースは文によって返された 行数を返すかも知れません。しかしながら、 この振る舞いは全てのデータベースで保証されていません。 さまざまな場所で使用するアプリケーションでは、 これに頼ってはいけません。

## 返り値

行の数を返します。

## 例

例 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"); ?>`

上の例の出力は以下となります。

    Deleted 9 rows.

例 2. SELECT 文によって返された行をカウントする

ほとんどのデータベースでは、PDOStatement->rowCount() は SELECT 文によって作用した行数を返しません。代わりに、 PDO->query() を使って 意図する SELECT 文として同様の述部を持つ SELECT COUNT(*) 文を発行し、PDOStatement->fetchColumn() を使って返される行数を取得することができます。 そうすることで、アプリケーションは正しい動作をすることができます。

`<?php
$sql = "SELECT COUNT(*) FROM fruit WHERE calories > 100";
if ($res = $conn->query($sql)) {
/* SELECT 文にマッチする行数をチェックする */
if ($res->fetchColumn() > 0) {
/* 実際の SELECT 文を発行し、結果を処理する */
$sql = "SELECT name FROM fruit WHERE calories > 100";
foreach ($conn->query($sql) as $row) {
print "Name: " . $row['NAME'] . "\n";
}
}
/* 行がマッチしなかった場合 -- 他に何かをする */
else {
print "No rows matched the query.";
}
}
$res = null;
$conn = null;
?>`

上の例の出力は以下となります。

    apple
    banana
    orange
    pear

## 参考

PDOStatement->columnCount()
PDOStatement->fetchColumn()
PDO->query()

前のページ | ホーム | 次のページ
PDOStatement->nextRowset() | 上に戻る | PDOStatement->setAttribute()