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