bug68371.phpt 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. --TEST--
  2. PDO MySQL Bug #38671 (PDO#getAttribute() cannot be called with platform-specific attribute names)
  3. --SKIPIF--
  4. <?php
  5. require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'skipif.inc');
  6. require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
  7. MySQLPDOTest::skip();
  8. ?>
  9. --FILE--
  10. <?php
  11. require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
  12. $pdo = MySQLPDOTest::factory();
  13. $pdo->setAttribute (\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
  14. $attrs = array(
  15. // Extensive test: default value and set+get values
  16. PDO::ATTR_EMULATE_PREPARES => array(null, 1, 0),
  17. PDO::MYSQL_ATTR_DIRECT_QUERY => array(null, 0, 1),
  18. PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => array(null, 0, 1),
  19. // Just test the default
  20. PDO::ATTR_AUTOCOMMIT => array(null),
  21. PDO::ATTR_PREFETCH => array(null),
  22. PDO::ATTR_TIMEOUT => array(null),
  23. PDO::ATTR_ERRMODE => array(null),
  24. PDO::ATTR_SERVER_VERSION => array(null),
  25. PDO::ATTR_CLIENT_VERSION => array(null),
  26. PDO::ATTR_SERVER_INFO => array(null),
  27. PDO::ATTR_CONNECTION_STATUS => array(null),
  28. PDO::ATTR_CASE => array(null),
  29. PDO::ATTR_CURSOR_NAME => array(null),
  30. PDO::ATTR_CURSOR => array(null),
  31. PDO::ATTR_ORACLE_NULLS => array(null),
  32. PDO::ATTR_PERSISTENT => array(null),
  33. PDO::ATTR_STATEMENT_CLASS => array(null),
  34. PDO::ATTR_FETCH_TABLE_NAMES => array(null),
  35. PDO::ATTR_FETCH_CATALOG_NAMES => array(null),
  36. PDO::ATTR_DRIVER_NAME => array(null),
  37. PDO::ATTR_STRINGIFY_FETCHES => array(null),
  38. PDO::ATTR_MAX_COLUMN_LEN => array(null),
  39. PDO::ATTR_DEFAULT_FETCH_MODE => array(null),
  40. );
  41. foreach ($attrs as $a => $vals) {
  42. foreach ($vals as $v) {
  43. try {
  44. if (!isset($v)) {
  45. var_dump($pdo->getAttribute($a));
  46. } else {
  47. $pdo->setAttribute($a, $v);
  48. if ($pdo->getAttribute($a) === $v) {
  49. echo "OK\n";
  50. } else {
  51. throw new \Exception('KO');
  52. }
  53. }
  54. } catch (\Exception $e) {
  55. if ($e->getCode() == 'IM001') {
  56. echo "ERR\n";
  57. } else {
  58. echo "ERR {$e->getMessage()}\n";
  59. }
  60. }
  61. }
  62. }
  63. ?>
  64. --EXPECTF--
  65. int(1)
  66. OK
  67. OK
  68. int(0)
  69. OK
  70. OK
  71. int(1)
  72. OK
  73. OK
  74. int(1)
  75. ERR
  76. ERR
  77. int(2)
  78. string(%d) "%s"
  79. string(%d) "%s"
  80. string(%d) "%s"
  81. string(%d) "%s"
  82. int(2)
  83. ERR
  84. ERR
  85. int(0)
  86. bool(false)
  87. array(1) {
  88. [0]=>
  89. string(12) "PDOStatement"
  90. }
  91. ERR
  92. ERR
  93. string(5) "mysql"
  94. ERR
  95. ERR
  96. int(4)