Latest web development tutorials

PDOStatement::rowCount

PHP PDO 參考手冊 PHP PDO參考手冊

PDOStatement::rowCount — 返回受上一個SQL 語句影響的行數(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)


說明

語法

int PDOStatement::rowCount ( void )

PDOStatement::rowCount() 返回上一個由對應的PDOStatement 對象執行DELETE、 INSERT、或UPDATE 語句受影響的行數。

如果上一條由相關PDOStatement 執行的SQL 語句是一條SELECT 語句,有些數據可能返回由此語句返回的行數。 但這種方式不能保證對所有數據有效,且對於可移植的應用不應依賴於此方式。


返回值

返回行數。


實例

返回刪除的行數

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.

計算由一個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

PHP PDO 參考手冊 PHP PDO參考手冊