pdo_012.phpt 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. --TEST--
  2. PDO Common: PDOStatement::setFetchMode
  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('CREATE TABLE test(id int NOT NULL PRIMARY KEY, val VARCHAR(10), grp VARCHAR(10))');
  18. $db->exec('INSERT INTO test VALUES(1, \'A\', \'Group1\')');
  19. $db->exec('INSERT INTO test VALUES(2, \'B\', \'Group2\')');
  20. $SELECT = 'SELECT val, grp FROM test';
  21. $stmt = $db->query($SELECT, PDO::FETCH_NUM);
  22. var_dump($stmt->fetchAll());
  23. class Test
  24. {
  25. function __construct($name = 'N/A')
  26. {
  27. echo __METHOD__ . "($name)\n";
  28. }
  29. }
  30. unset($stmt);
  31. $stmt = $db->query($SELECT, PDO::FETCH_CLASS, 'Test');
  32. var_dump($stmt->fetchAll());
  33. unset($stmt);
  34. $stmt = $db->query($SELECT, PDO::FETCH_NUM);
  35. $stmt->setFetchMode(PDO::FETCH_CLASS, 'Test', array('Changed'));
  36. var_dump($stmt->fetchAll());
  37. ?>
  38. --EXPECTF--
  39. array(2) {
  40. [0]=>
  41. array(2) {
  42. [0]=>
  43. string(1) "A"
  44. [1]=>
  45. string(6) "Group1"
  46. }
  47. [1]=>
  48. array(2) {
  49. [0]=>
  50. string(1) "B"
  51. [1]=>
  52. string(6) "Group2"
  53. }
  54. }
  55. Test::__construct(N/A)
  56. Test::__construct(N/A)
  57. array(2) {
  58. [0]=>
  59. object(Test)#%d (2) {
  60. ["val"]=>
  61. string(1) "A"
  62. ["grp"]=>
  63. string(6) "Group1"
  64. }
  65. [1]=>
  66. object(Test)#%d (2) {
  67. ["val"]=>
  68. string(1) "B"
  69. ["grp"]=>
  70. string(6) "Group2"
  71. }
  72. }
  73. Test::__construct(Changed)
  74. Test::__construct(Changed)
  75. array(2) {
  76. [0]=>
  77. object(Test)#%d (2) {
  78. ["val"]=>
  79. string(1) "A"
  80. ["grp"]=>
  81. string(6) "Group1"
  82. }
  83. [1]=>
  84. object(Test)#%d (2) {
  85. ["val"]=>
  86. string(1) "B"
  87. ["grp"]=>
  88. string(6) "Group2"
  89. }
  90. }