bug_45120.phpt 1.3 KB

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