bug_64172.phpt 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. --TEST--
  2. PDO Common: Bug #64172 errorInfo is not properly cleaned up
  3. --EXTENSIONS--
  4. pdo
  5. --SKIPIF--
  6. <?php
  7. $dir = getenv('REDIR_TEST_DIR');
  8. if (false == $dir) die('skip no driver');
  9. require_once $dir . 'pdo_test.inc';
  10. PDOTest::skip();
  11. ?>
  12. --FILE--
  13. <?php
  14. if (getenv('REDIR_TEST_DIR') === false) putenv('REDIR_TEST_DIR='.__DIR__ . '/../../pdo/tests/');
  15. require_once getenv('REDIR_TEST_DIR') . 'pdo_test.inc';
  16. $db = PDOTest::factory();
  17. @$db->exec("DROP TABLE test");
  18. $db->exec("CREATE TABLE test (x int)");
  19. $db->exec("INSERT INTO test VALUES (1)");
  20. echo "===FAIL===\n";
  21. $db->query('SELECT * FROM bad_table');
  22. echo "\n";
  23. echo "===TEST===\n";
  24. var_dump(is_string($db->errorInfo()[0])) . "\n";
  25. var_dump(is_int($db->errorInfo()[1])) . "\n";
  26. var_dump(is_string($db->errorInfo()[2])) . "\n";
  27. echo "===GOOD===\n";
  28. $stmt = $db->query('SELECT * FROM test');
  29. $stmt->fetchAll();
  30. $stmt = null;
  31. var_dump($db->errorInfo());
  32. echo "===FAIL===\n";
  33. $db->exec("INSERT INTO bad_table VALUES(1)");
  34. echo "\n";
  35. echo "===TEST===\n";
  36. var_dump(is_string($db->errorInfo()[0])) . "\n";
  37. var_dump(is_int($db->errorInfo()[1])) . "\n";
  38. var_dump(is_string($db->errorInfo()[2])) . "\n";
  39. echo "===GOOD===\n";
  40. $db->exec("INSERT INTO test VALUES (2)");
  41. var_dump($db->errorInfo());
  42. $db->exec("DROP TABLE test");
  43. ?>
  44. --EXPECTF--
  45. ===FAIL===
  46. Warning: PDO::query(): SQLSTATE[%s]: %s
  47. %A
  48. ===TEST===
  49. bool(true)
  50. bool(true)
  51. bool(true)
  52. ===GOOD===
  53. array(3) {
  54. [0]=>
  55. string(5) "00000"
  56. [1]=>
  57. NULL
  58. [2]=>
  59. NULL
  60. }
  61. ===FAIL===
  62. Warning: PDO::exec(): SQLSTATE[%s]: %s
  63. %A
  64. ===TEST===
  65. bool(true)
  66. bool(true)
  67. bool(true)
  68. ===GOOD===
  69. array(3) {
  70. [0]=>
  71. string(5) "00000"
  72. [1]=>
  73. NULL
  74. [2]=>
  75. NULL
  76. }