1--TEST-- 2PDO Common: Bug #64172 errorInfo is not properly cleaned up 3--SKIPIF-- 4<?php # vim:ft=php 5if (!extension_loaded('pdo')) die('skip'); 6$dir = getenv('REDIR_TEST_DIR'); 7if (false == $dir) die('skip no driver'); 8require_once $dir . 'pdo_test.inc'; 9PDOTest::skip(); 10?> 11--FILE-- 12<?php 13if (getenv('REDIR_TEST_DIR') === false) putenv('REDIR_TEST_DIR='.dirname(__FILE__) . '/../../pdo/tests/'); 14require_once getenv('REDIR_TEST_DIR') . 'pdo_test.inc'; 15 16$db = PDOTest::factory(); 17 18@$db->exec("DROP TABLE test"); 19$db->exec("CREATE TABLE test (x int)"); 20$db->exec("INSERT INTO test 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 test'); 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 test VALUES (2)"); 44var_dump($db->errorInfo()); 45 46$db->exec("DROP TABLE test"); 47?> 48===DONE=== 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===DONE=== 85