ID: 35391 Updated by: [EMAIL PROTECTED] Reported By: chris at x98 dot org -Status: Open +Status: Closed Bug Type: MySQL related Operating System: Windows XP SP 2 PHP Version: 5.1.0 New Comment:
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 http://snaps.php.net/. Thank you for the report, and for helping us make PHP better. Previous Comments: ------------------------------------------------------------------------ [2005-11-25 13:54:21] 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->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) ------------------------------------------------------------------------ [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