已删除记录的当前计数

问题描述:

我有一些简单的代码可以删除小于特定日期的表中的每个记录。我正在使用PDO作为db访问方法。已删除记录的当前计数

我怎么能看到(并因此向用户报告)多少记录在数据库中实际被删除?

我在想交易(计数记录被删除 - >执行删除 - >如果一切正常 - 提供记录给用户),但必须有一个更简单的方法,不是?

看来,执行只返回一个布尔值,只会给我一个成功的迹象。

$date = new DateTime('2014-06-22 12:00:00'); 

try{ 
    $datestring = $date->format('Y-m-d H:i:s'); 
    $dbh = getConnected($host,$user,$pass,$db); 
    $stmt = $dbh->prepare("DELETE FROM sometable WHERE date_and_time < '$datestring'"); 
    $stmt->execute(); 
    echo "$rd records deleted"; // where $rd = number of records deleted returned from the query 
} 
catch(PDOException $e) 
{ 
    echo 'Something went wrong!'; 
    error_log($e->getMessage().PHP_EOL, 3, "errors.log"); 
} 

$dbh -> connection = null; 

$stmt->rowCount(); 

会给你受影响的行数

PDO rowcount

+0

谢谢了!正是我期待的,它完美的工作! – Roger 2014-08-30 12:18:22

尝试affected_rows function

printf("rows inserted: %d\n", $stmt->affected_rows); 
+0

感谢您的输入。我最初忘了提及我正在使用PDO而不是mysqli。 – Roger 2014-08-30 12:19:29

如果是mysqli的使用(它没有说明或明确的),你的情况,做$ stmt-> affected_rows

http://php.net/manual/en/mysqli-stmt.affected-rows.php

+0

对不起。我更新了我的问题以反映使用的访问方法(PDO)。 – Roger 2014-08-30 12:04:36

+1

啊,然后用@Undefined_variable使用答案 – Uberfuzzy 2014-08-30 12:06:42