xref: /php-src/ext/pdo/tests/bug_64172.phpt (revision f4a5db3e)
1--TEST--
2PDO Common: Bug #64172 errorInfo is not properly cleaned up
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
17$db = PDOTest::factory();
18
19$db->exec("CREATE TABLE test64172 (x int)");
20$db->exec("INSERT INTO test64172 VALUES (1)");
21
22echo "===FAIL===\n";
23$db->query('SELECT * FROM bad_table');
24echo "\n";
25echo "===TEST===\n";
26var_dump(is_string($db->errorInfo()[0])) . "\n";
27var_dump(is_int($db->errorInfo()[1])) . "\n";
28var_dump(is_string($db->errorInfo()[2])) . "\n";
29echo "===GOOD===\n";
30$stmt = $db->query('SELECT * FROM test64172');
31$stmt->fetchAll();
32$stmt = null;
33var_dump($db->errorInfo());
34
35echo "===FAIL===\n";
36$db->exec("INSERT INTO bad_table VALUES(1)");
37echo "\n";
38echo "===TEST===\n";
39var_dump(is_string($db->errorInfo()[0])) . "\n";
40var_dump(is_int($db->errorInfo()[1])) . "\n";
41var_dump(is_string($db->errorInfo()[2])) . "\n";
42echo "===GOOD===\n";
43$db->exec("INSERT INTO test64172 VALUES (2)");
44var_dump($db->errorInfo());
45?>
46--CLEAN--
47<?php
48require_once getenv('REDIR_TEST_DIR') . 'pdo_test.inc';
49$db = PDOTest::factory();
50PDOTest::dropTableIfExists($db, "test64172");
51?>
52--EXPECTF--
53===FAIL===
54
55Warning: PDO::query(): SQLSTATE[%s]: %s
56%A
57===TEST===
58bool(true)
59bool(true)
60bool(true)
61===GOOD===
62array(3) {
63  [0]=>
64  string(5) "00000"
65  [1]=>
66  NULL
67  [2]=>
68  NULL
69}
70===FAIL===
71
72Warning: PDO::exec(): SQLSTATE[%s]: %s
73%A
74===TEST===
75bool(true)
76bool(true)
77bool(true)
78===GOOD===
79array(3) {
80  [0]=>
81  string(5) "00000"
82  [1]=>
83  NULL
84  [2]=>
85  NULL
86}
87