bug_45120.phpt 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. --TEST--
  2. Bug #45120 (PDOStatement->execute() returns true then false for same statement)
  3. --SKIPIF--
  4. <?php
  5. if (!extension_loaded('pdo') || !extension_loaded('pdo_mysql')) die('skip not loaded');
  6. require dirname(__FILE__) . '/config.inc';
  7. require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
  8. PDOTest::skip();
  9. ?>
  10. --FILE--
  11. <?php
  12. require dirname(__FILE__) . '/config.inc';
  13. require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
  14. $db = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt');
  15. function bug_45120($db) {
  16. $stmt = $db->prepare("SELECT 1 AS 'one'");
  17. if (true !== $stmt->execute())
  18. printf("[001] Execute has failed: %s\n", var_export($stmt->errorInfo(), true));
  19. $res = $stmt->fetch(PDO::FETCH_ASSOC);
  20. if ($res['one'] != 1)
  21. printf("[002] Wrong results: %s\n", var_export($res, true));
  22. if (true !== $stmt->execute())
  23. printf("[003] Execute has failed: %s\n", var_export($stmt->errorInfo(), true));
  24. $res = $stmt->fetch(PDO::FETCH_ASSOC);
  25. if ($res['one'] != 1)
  26. printf("[004] Wrong results: %s\n", var_export($res, true));
  27. }
  28. print "Emulated Prepared Statements\n";
  29. $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
  30. bug_45120($db);
  31. print "Native Prepared Statements\n";
  32. $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
  33. bug_45120($db);
  34. print "done!";
  35. ?>
  36. --EXPECT--
  37. Emulated Prepared Statements
  38. Native Prepared Statements
  39. done!