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>