pdo_025.phpt 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. --TEST--
  2. PDO Common: PDO::FETCH_INTO
  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), val2 VARCHAR(16))');
  18. $data = array(
  19. array('10', 'Abc', 'zxy'),
  20. array('20', 'Def', 'wvu'),
  21. array('30', 'Ghi', 'tsr'),
  22. array('40', 'Jkl', 'qpo'),
  23. array('50', 'Mno', 'nml'),
  24. array('60', 'Pqr', 'kji'),
  25. );
  26. // Insert using question mark placeholders
  27. $stmt = $db->prepare("INSERT INTO test VALUES(?, ?, ?)");
  28. foreach ($data as $row) {
  29. $stmt->execute($row);
  30. }
  31. class Test {
  32. public $id, $val, $val2;
  33. }
  34. $stmt = $db->prepare('SELECT * FROM test');
  35. $stmt->setFetchMode(PDO::FETCH_INTO, new Test);
  36. $stmt->execute();
  37. foreach($stmt as $obj) {
  38. var_dump($obj);
  39. }
  40. echo "===FAIL===\n";
  41. class Fail {
  42. protected $id;
  43. public $val, $val2;
  44. }
  45. $stmt->setFetchMode(PDO::FETCH_INTO, new Fail);
  46. $stmt->execute();
  47. foreach($stmt as $obj) {
  48. var_dump($obj);
  49. }
  50. ?>
  51. --EXPECTF--
  52. object(Test)#%d (3) {
  53. ["id"]=>
  54. string(2) "10"
  55. ["val"]=>
  56. string(3) "Abc"
  57. ["val2"]=>
  58. string(3) "zxy"
  59. }
  60. object(Test)#%d (3) {
  61. ["id"]=>
  62. string(2) "20"
  63. ["val"]=>
  64. string(3) "Def"
  65. ["val2"]=>
  66. string(3) "wvu"
  67. }
  68. object(Test)#%d (3) {
  69. ["id"]=>
  70. string(2) "30"
  71. ["val"]=>
  72. string(3) "Ghi"
  73. ["val2"]=>
  74. string(3) "tsr"
  75. }
  76. object(Test)#%d (3) {
  77. ["id"]=>
  78. string(2) "40"
  79. ["val"]=>
  80. string(3) "Jkl"
  81. ["val2"]=>
  82. string(3) "qpo"
  83. }
  84. object(Test)#%d (3) {
  85. ["id"]=>
  86. string(2) "50"
  87. ["val"]=>
  88. string(3) "Mno"
  89. ["val2"]=>
  90. string(3) "nml"
  91. }
  92. object(Test)#%d (3) {
  93. ["id"]=>
  94. string(2) "60"
  95. ["val"]=>
  96. string(3) "Pqr"
  97. ["val2"]=>
  98. string(3) "kji"
  99. }
  100. ===FAIL===
  101. Fatal error: Uncaught Error: Cannot access protected property Fail::$id in %spdo_025.php:%d
  102. Stack trace:
  103. #0 {main}
  104. thrown in %spdo_025.php on line %d