1--TEST--
2Change column count after statement has been prepared
3--SKIPIF--
4<?php
5if (!extension_loaded('pdo') || !extension_loaded('pdo_mysql')) die('skip not loaded');
6require_once(__DIR__ . DIRECTORY_SEPARATOR . 'skipif.inc');
7require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
8MySQLPDOTest::skip();
9?>
10--FILE--
11<?php
12require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
13
14$db = MySQLPDOTest::factory();
15$db->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
16
17$db->exec('DROP TABLE IF EXISTS test');
18$db->exec('CREATE TABLE test (id INTEGER PRIMARY KEY NOT NULL, name VARCHAR(255) NOT NULL)');
19
20$stmt = $db->prepare('INSERT INTO test (id, name) VALUES(:id, :name)');
21$stmt->execute([
22    'id'   => 10,
23    'name' => 'test',
24]);
25
26$stmt = $db->prepare('SELECT * FROM test WHERE id = :id');
27$stmt->execute(['id' => 10]);
28var_dump($stmt->fetchAll(\PDO::FETCH_ASSOC));
29
30$db->exec('ALTER TABLE test ADD new_col VARCHAR(255)');
31$stmt->execute(['id' => 10]);
32var_dump($stmt->fetchAll(\PDO::FETCH_ASSOC));
33
34?>
35--CLEAN--
36<?php
37require __DIR__ . '/mysql_pdo_test.inc';
38MySQLPDOTest::dropTestTable();
39?>
40--EXPECT--
41array(1) {
42  [0]=>
43  array(2) {
44    ["id"]=>
45    string(2) "10"
46    ["name"]=>
47    string(4) "test"
48  }
49}
50array(1) {
51  [0]=>
52  array(3) {
53    ["id"]=>
54    string(2) "10"
55    ["name"]=>
56    string(4) "test"
57    ["new_col"]=>
58    NULL
59  }
60}
61