2014-08-30 2 views
0

특정 날짜보다 작은 테이블의 모든 레코드를 삭제하는 간단한 코드가 있습니다. db 액세스 방법으로 PDO를 사용하고 있습니다.삭제 된 레코드의 현재 수

어떻게 볼 수(따라서 사용자에게보고)실제로 데이터베이스에 얼마나 많은 기록을 삭제했다가?

트랜잭션 (카운트 레코드가 삭제 -> 실행 삭제 -> 모든 것이 OK - 현재 카운트 된 레코드가 사용자에게 있음)을 생각하고 있었지만 더 쉬운 방법이 있습니까?

실행은 내게 성공의 표시 만 제공하는 부울 값만 반환하는 것 같습니다.

$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; 

답변

3
$stmt->rowCount(); 

영향을받는 행 수를 알려드립니다.

PDO rowcount

+0

감사합니다. 그냥 내가 뭘 찾고 있었고 그것은 완벽하게 작동합니다! – Roger

0

affected_rows function보십시오 : 그 사용 mysqli 경우 귀하의 경우, (그 진술 또는 명확하지)

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

입력 해 주셔서 감사합니다. 나는 처음에 mysqli가 아니라 PDO를 사용하고 있음을 언급하는 것을 잊었다. – Roger

관련 문제