#35391 [Opn]: PDO::exec does not return number of affected rows

From: 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

« previous php.bugs (#88953) next »