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("DROP TABLE test"); 20$db->exec("CREATE TABLE test (x int)"); 21$db->exec("INSERT INTO test VALUES (1)"); 22 23echo "===FAIL===\n"; 24$db->query('SELECT * FROM bad_table'); 25echo "\n"; 26echo "===TEST===\n"; 27var_dump(is_string($db->errorInfo()[0])) . "\n"; 28var_dump(is_int($db->errorInfo()[1])) . "\n"; 29var_dump(is_string($db->errorInfo()[2])) . "\n"; 30echo "===GOOD===\n"; 31$stmt = $db->query('SELECT * FROM test'); 32$stmt->fetchAll(); 33$stmt = null; 34var_dump($db->errorInfo()); 35 36echo "===FAIL===\n"; 37$db->exec("INSERT INTO bad_table VALUES(1)"); 38echo "\n"; 39echo "===TEST===\n"; 40var_dump(is_string($db->errorInfo()[0])) . "\n"; 41var_dump(is_int($db->errorInfo()[1])) . "\n"; 42var_dump(is_string($db->errorInfo()[2])) . "\n"; 43echo "===GOOD===\n"; 44$db->exec("INSERT INTO test VALUES (2)"); 45var_dump($db->errorInfo()); 46 47$db->exec("DROP TABLE test"); 48?> 49--EXPECTF-- 50===FAIL=== 51 52Warning: PDO::query(): SQLSTATE[%s]: %s 53%A 54===TEST=== 55bool(true) 56bool(true) 57bool(true) 58===GOOD=== 59array(3) { 60 [0]=> 61 string(5) "00000" 62 [1]=> 63 NULL 64 [2]=> 65 NULL 66} 67===FAIL=== 68 69Warning: PDO::exec(): SQLSTATE[%s]: %s 70%A 71===TEST=== 72bool(true) 73bool(true) 74bool(true) 75===GOOD=== 76array(3) { 77 [0]=> 78 string(5) "00000" 79 [1]=> 80 NULL 81 [2]=> 82 NULL 83} 84