#35391 [Opn]: PDO::exec does not return number of affected rows
| From: | chris at x98 dot org | Date: | Fri, 25 Nov 2005 12:54:22 +0000 |
| Subject: | #35391 [Opn]: PDO::exec does not return number of affected rows | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-88953@lists.php.net to get a copy of this message | ||
ID: 35391
User updated by: chris at x98 dot org
Reported By: chris at x98 dot org
Status: Open
Bug Type: MySQL related
Operating System: Windows XP SP 2
PHP Version: 5.1.0
New Comment:
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->execute();
var_dump($stm->rowCount());
}
$stm = $db->prepare("DELETE FROM test WHERE id>0");
$stm->execute();
var_dump($stm->rowCount());
returns
int(1) int(1) int(1) int(1) int(4)
Previous Comments:
------------------------------------------------------------------------
[2005-11-25 13:40:14] chris at x98 dot org
Description:
------------
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)");
var_dump($count);
}
$count = $db->exec("DELETE FROM test WHERE id>0");
var_dump($count);
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)
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=35391&edit=1