pierrick Thu, 03 Dec 2009 15:24:43 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=291657
Log: Fixed bug #45120 (PDOStatement->execute() returns true then false for same statement). Bug: http://bugs.php.net/45120 (Open) PDOStatement->execute() returns true then false for same statement Changed paths: U php/php-src/branches/PHP_5_2/NEWS U php/php-src/branches/PHP_5_2/ext/pdo/pdo_stmt.c A php/php-src/branches/PHP_5_2/ext/pdo_mysql/tests/bug_45120.phpt U php/php-src/branches/PHP_5_3/NEWS U php/php-src/branches/PHP_5_3/ext/pdo/pdo_stmt.c U php/php-src/branches/PHP_5_3/ext/pdo_mysql/tests/bug_45120.phpt U php/php-src/trunk/ext/pdo/pdo_stmt.c U php/php-src/trunk/ext/pdo_mysql/tests/bug_45120.phpt Modified: php/php-src/branches/PHP_5_2/NEWS =================================================================== --- php/php-src/branches/PHP_5_2/NEWS 2009-12-03 15:14:12 UTC (rev 291656) +++ php/php-src/branches/PHP_5_2/NEWS 2009-12-03 15:24:43 UTC (rev 291657) @@ -14,8 +14,9 @@ - Fixed bug #49660 (libxml 2.7.3+ limits text nodes to 10MB). (Felipe) - Fixed bug #49472 (Constants defined in Interfaces can be overridden). (Felipe) +- Fixed bug #45120 (PDOStatement->execute() returns true then false for same + statement). (Pierrick) - 27 Nov 2009, PHP 5.2.12RC3 - Fixed break in the build chain introduced in 5.2.12RC2 (Jani) Modified: php/php-src/branches/PHP_5_2/ext/pdo/pdo_stmt.c =================================================================== --- php/php-src/branches/PHP_5_2/ext/pdo/pdo_stmt.c 2009-12-03 15:14:12 UTC (rev 291656) +++ php/php-src/branches/PHP_5_2/ext/pdo/pdo_stmt.c 2009-12-03 15:24:43 UTC (rev 291657) @@ -509,6 +509,7 @@ /* no changes were made */ stmt->active_query_string = stmt->query_string; stmt->active_query_stringlen = stmt->query_stringlen; + ret = 1; } else if (ret == -1) { /* something broke */ PDO_HANDLE_STMT_ERR(); Added: php/php-src/branches/PHP_5_2/ext/pdo_mysql/tests/bug_45120.phpt =================================================================== --- php/php-src/branches/PHP_5_2/ext/pdo_mysql/tests/bug_45120.phpt (rev 0) +++ php/php-src/branches/PHP_5_2/ext/pdo_mysql/tests/bug_45120.phpt 2009-12-03 15:24:43 UTC (rev 291657) @@ -0,0 +1,48 @@ +--TEST-- +Bug #45120 (PDOStatement->execute() returns true then false for same statement) +--SKIPIF-- +<?php +if (!extension_loaded('pdo') || !extension_loaded('pdo_mysql')) die('skip not loaded'); +require dirname(__FILE__) . '/config.inc'; +require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc'; +PDOTest::skip(); +?> +--FILE-- +<?php +require dirname(__FILE__) . '/config.inc'; +require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc'; +$db = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt'); + +function bug_45120($db) { + + $stmt = $db->prepare("SELECT 1 AS 'one'"); + if (true !== $stmt->execute()) + printf("[001] Execute has failed: %s\n", var_export($stmt->errorInfo(), true)); + + $res = $stmt->fetch(PDO::FETCH_ASSOC); + if ($res['one'] != 1) + printf("[002] Wrong results: %s\n", var_export($res, true)); + + if (true !== $stmt->execute()) + printf("[003] Execute has failed: %s\n", var_export($stmt->errorInfo(), true)); + + $res = $stmt->fetch(PDO::FETCH_ASSOC); + if ($res['one'] != 1) + printf("[004] Wrong results: %s\n", var_export($res, true)); + +} + +print "Emulated Prepared Statements\n"; +$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1); +bug_45120($db); + +print "Native Prepared Statements\n"; +$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0); +bug_45120($db); + +print "done!"; +?> +--EXPECT-- +Emulated Prepared Statements +Native Prepared Statements +done! Modified: php/php-src/branches/PHP_5_3/NEWS =================================================================== --- php/php-src/branches/PHP_5_3/NEWS 2009-12-03 15:14:12 UTC (rev 291656) +++ php/php-src/branches/PHP_5_3/NEWS 2009-12-03 15:24:43 UTC (rev 291657) @@ -97,6 +97,8 @@ - Fixed bug #49244 (Floating point NaN cause garbage characters). (Sjoerd) - Fixed bug #49224 (Compile error due to old DNS functions on AIX systems). (Scott) +- Fixed bug #45120 (PDOStatement->execute() returns true then false for same + statement). (Pierrick) 19 Nov 2009, PHP 5.3.1 Modified: php/php-src/branches/PHP_5_3/ext/pdo/pdo_stmt.c =================================================================== --- php/php-src/branches/PHP_5_3/ext/pdo/pdo_stmt.c 2009-12-03 15:14:12 UTC (rev 291656) +++ php/php-src/branches/PHP_5_3/ext/pdo/pdo_stmt.c 2009-12-03 15:24:43 UTC (rev 291657) @@ -497,6 +497,7 @@ /* no changes were made */ stmt->active_query_string = stmt->query_string; stmt->active_query_stringlen = stmt->query_stringlen; + ret = 1; } else if (ret == -1) { /* something broke */ PDO_HANDLE_STMT_ERR(); Modified: php/php-src/branches/PHP_5_3/ext/pdo_mysql/tests/bug_45120.phpt =================================================================== --- php/php-src/branches/PHP_5_3/ext/pdo_mysql/tests/bug_45120.phpt 2009-12-03 15:14:12 UTC (rev 291656) +++ php/php-src/branches/PHP_5_3/ext/pdo_mysql/tests/bug_45120.phpt 2009-12-03 15:24:43 UTC (rev 291657) @@ -42,8 +42,6 @@ print "done!"; ?> ---XFAIL-- -This is an open PDO bug. It is not a PDO_MYSQL bug --EXPECT-- Emulated Prepared Statements Native Prepared Statements Modified: php/php-src/trunk/ext/pdo/pdo_stmt.c =================================================================== --- php/php-src/trunk/ext/pdo/pdo_stmt.c 2009-12-03 15:14:12 UTC (rev 291656) +++ php/php-src/trunk/ext/pdo/pdo_stmt.c 2009-12-03 15:24:43 UTC (rev 291657) @@ -496,6 +496,7 @@ /* no changes were made */ stmt->active_query_string = stmt->query_string; stmt->active_query_stringlen = stmt->query_stringlen; + ret = 1; } else if (ret == -1) { /* something broke */ PDO_HANDLE_STMT_ERR(); Modified: php/php-src/trunk/ext/pdo_mysql/tests/bug_45120.phpt =================================================================== --- php/php-src/trunk/ext/pdo_mysql/tests/bug_45120.phpt 2009-12-03 15:14:12 UTC (rev 291656) +++ php/php-src/trunk/ext/pdo_mysql/tests/bug_45120.phpt 2009-12-03 15:24:43 UTC (rev 291657) @@ -42,8 +42,6 @@ print "done!"; ?> ---XFAIL-- -This is an open PDO bug. It is not a PDO_MYSQL bug --EXPECT-- Emulated Prepared Statements Native Prepared Statements
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
