--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!