Annotation of embedaddon/php/ext/pdo_mysql/tests/pdo_mysql_errorcode.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: MySQL PDO->errorCode()
3: --SKIPIF--
4: <?php
5: require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'skipif.inc');
6: require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
7: MySQLPDOTest::skip();
8: $db = MySQLPDOTest::factory();
9: ?>
10: --FILE--
11: <?php
12: require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
13: $db = MySQLPDOTest::factory();
14: MySQLPDOTest::createTestTable($db);
15:
16: function check_error($offset, &$obj, $expected = '00000') {
17:
18: $code = $obj->errorCode();
19: if (($code != $expected) && (($expected != '00000') && ($code != ''))) {
20: printf("[%03d] Expecting error code '%s' got code '%s'\n",
21: $offset, $expected, $code);
22: }
23:
24: }
25:
26: try {
27:
28: /*
29: If you create a PDOStatement object through PDO->prepare()
30: or PDO->query() and invoke an error on the statement handle,
31: PDO->errorCode() will not reflect that error. You must call
32: PDOStatement->errorCode() to return the error code for an
33: operation performed on a particular statement handle.
34: */
35: $code = $db->errorCode();
36: check_error(2, $db);
37:
38: $stmt = $db->query('SELECT id, label FROM test');
39: $stmt2 = &$stmt;
40: check_error(3, $db);
41: check_error(4, $stmt);
42:
43: $db->exec('DROP TABLE IF EXISTS test');
44: @$stmt->execute();
45: check_error(4, $db);
46: check_error(5, $stmt, '42S02');
47: check_error(6, $stmt2, '42S02');
48:
49: $db->exec('DROP TABLE IF EXISTS unknown');
50: @$stmt = $db->query('SELECT id, label FROM unknown');
51: check_error(7, $db, '42S02');
52:
53: MySQLPDOTest::createTestTable($db);
54: $stmt = $db->query('SELECT id, label FROM test');
55: check_error(8, $db);
56: check_error(9, $stmt);
57:
58: $db2 = &$db;
59: @$db->query('SELECT id, label FROM unknown');
60: check_error(10, $db, '42S02');
61: check_error(11, $db2, '42S02');
62: check_error(12, $stmt);
63: check_error(13, $stmt2);
64:
65: // lets hope this is an invalid attribute code
66: $invalid_attr = -1 * PHP_INT_MAX + 3;
67: $tmp = @$db->getAttribute($invalid_attr);
68: check_error(14, $db, 'IM001');
69: check_error(15, $db2, 'IM001');
70: check_error(16, $stmt);
71: check_error(17, $stmt2);
72:
73: } catch (PDOException $e) {
74: printf("[001] %s [%s] %s\n",
75: $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
76: }
77:
78: print "done!";
79: ?>
80: --CLEAN--
81: <?php
82: require dirname(__FILE__) . '/mysql_pdo_test.inc';
83: MySQLPDOTest::dropTestTable();
84: ?>
85: --EXPECTF--
86: done!
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>