|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #35391 PDO::exec does not return number of affected rows
Submitted: 2005-11-25 13:40 UTC Modified: 2005-11-25 13:56 UTC
From: chris at x98 dot org Assigned:
Status: Closed Package: MySQL related
PHP Version: 5.1.0 OS: Windows XP SP 2
Private report: No CVE-ID: None
 [2005-11-25 13:40 UTC] chris at x98 dot org
According to the docs, PDO::exec should return the number of rows affected by the INSERT/DELETE/... statement. In my setup (WinXPSP2/Apache 2.0.55/PHP 5.1.0/mysql 4.1.15-nt), int(0) is returned instead always.

Reproduce code:
// table test has two columns (id and value)
$db = new PDO('mysql:host=localhost;dbname=test', 'xxxxx', 'xxxxx');
for ($i=1;$i<5;$i++) {
	$count = $db->exec("INSERT INTO TEST (id, value) VALUES ($i, 1)");
$count = $db->exec("DELETE FROM test WHERE id>0");

Expected result:
int(1) int(1) int(1) int(1) int(4)

(assuming table test was empty before)

Actual result:
int(0) int(0) int(0) int(0) int(0)


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2005-11-25 13:54 UTC] chris at x98 dot org
Additional Note: if PDO::Statement with rowCount() function is used instead, the number of affected rows gets returned as expected: 

 for ($i=1;$i<5;$i++) {
 	$stm = $db->prepare("INSERT INTO TEST (id, value) VALUES ($i, 1)");
 $stm = $db->prepare("DELETE FROM test WHERE id>0");


int(1) int(1) int(1) int(1) int(4)
 [2005-11-25 13:56 UTC]
This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
Thank you for the report, and for helping us make PHP better.

PHP Copyright © 2001-2019 The PHP Group
All rights reserved.
Last updated: Tue Apr 23 11:01:25 2019 UTC