xref: /PHP-8.1/ext/pdo/tests/pdo_013.phpt (revision 74859783)
1--TEST--
2PDO Common: PDOStatement iterator
3--EXTENSIONS--
4pdo
5--SKIPIF--
6<?php
7$dir = getenv('REDIR_TEST_DIR');
8if (false == $dir) die('skip no driver');
9require_once $dir . 'pdo_test.inc';
10PDOTest::skip();
11?>
12--FILE--
13<?php
14if (getenv('REDIR_TEST_DIR') === false) putenv('REDIR_TEST_DIR='.__DIR__ . '/../../pdo/tests/');
15require_once getenv('REDIR_TEST_DIR') . 'pdo_test.inc';
16$db = PDOTest::factory();
17
18$db->exec('CREATE TABLE test(id int NOT NULL PRIMARY KEY, val VARCHAR(10), grp VARCHAR(10))');
19$db->exec('INSERT INTO test VALUES(1, \'A\', \'Group1\')');
20$db->exec('INSERT INTO test VALUES(2, \'B\', \'Group2\')');
21
22$SELECT = 'SELECT val, grp FROM test';
23
24$stmt = $db->prepare($SELECT);
25
26$stmt->execute();
27$stmt->setFetchMode(PDO::FETCH_NUM);
28foreach ($stmt as $data)
29{
30    var_dump($data);
31}
32
33class Test
34{
35    function __construct($name = 'N/A')
36    {
37        echo __METHOD__ . "($name)\n";
38    }
39}
40
41unset($stmt);
42
43foreach ($db->query($SELECT, PDO::FETCH_CLASS, 'Test') as $data)
44{
45    var_dump($data);
46}
47
48unset($stmt);
49
50$stmt = $db->query($SELECT, PDO::FETCH_CLASS, 'Test', array('WOW'));
51
52foreach($stmt as $data)
53{
54    var_dump($data);
55}
56?>
57--EXPECTF--
58array(2) {
59  [0]=>
60  string(1) "A"
61  [1]=>
62  string(6) "Group1"
63}
64array(2) {
65  [0]=>
66  string(1) "B"
67  [1]=>
68  string(6) "Group2"
69}
70Test::__construct(N/A)
71object(Test)#%d (2) {
72  ["val"]=>
73  string(1) "A"
74  ["grp"]=>
75  string(6) "Group1"
76}
77Test::__construct(N/A)
78object(Test)#%d (2) {
79  ["val"]=>
80  string(1) "B"
81  ["grp"]=>
82  string(6) "Group2"
83}
84Test::__construct(WOW)
85object(Test)#%d (2) {
86  ["val"]=>
87  string(1) "A"
88  ["grp"]=>
89  string(6) "Group1"
90}
91Test::__construct(WOW)
92object(Test)#%d (2) {
93  ["val"]=>
94  string(1) "B"
95  ["grp"]=>
96  string(6) "Group2"
97}
98