bug68371.phpt 2.4 KB

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