Annotation of embedaddon/php/ext/mysql/tests/mysql_fetch_field.phpt, revision 1.1

1.1     ! misho       1: --TEST--
        !             2: mysql_fetch_field()
        !             3: --SKIPIF--
        !             4: <?php
        !             5: require_once('skipif.inc');
        !             6: require_once('skipifconnectfailure.inc');
        !             7: ?>
        !             8: --FILE--
        !             9: <?php
        !            10:        include "connect.inc";
        !            11: 
        !            12:        $tmp    = NULL;
        !            13:        $link   = NULL;
        !            14: 
        !            15:        // Note: no SQL type tests, internally the same function gets used as for mysql_fetch_array() which does a lot of SQL type test
        !            16:        if (!is_null($tmp = @mysql_fetch_field()))
        !            17:                printf("[001] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp);
        !            18: 
        !            19:        if (NULL !== ($tmp = @mysql_fetch_field($link)))
        !            20:                printf("[002] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp);
        !            21: 
        !            22:        require('table.inc');
        !            23: 
        !            24:        $version = mysql_get_server_info($link);
        !            25:        if (!preg_match('@(\d+)\.(\d+)\.(\d+)@ism', $version, $matches))
        !            26:                printf("[003] Cannot get server version\n");
        !            27:        $version = ($matches[1] * 100) + ($matches[2] * 10) + $matches[3];
        !            28: 
        !            29:        if (!$res = mysql_query("SELECT id AS ID, label FROM test AS TEST ORDER BY id LIMIT 1", $link)) {
        !            30:                printf("[004] [%d] %s\n", mysql_errno($link), mysql_error($link));
        !            31:        }
        !            32: 
        !            33:        while ($tmp = mysql_fetch_field($res))
        !            34:                var_dump($tmp);
        !            35:        var_dump($tmp);
        !            36: 
        !            37:        mysql_free_result($res);
        !            38: 
        !            39:        if (!$res = mysql_query("SELECT id AS ID, label FROM test AS TEST ORDER BY id LIMIT 1", $link)) {
        !            40:                printf("[005] [%d] %s\n", mysql_errno($link), mysql_error($link));
        !            41:        }
        !            42:        if (false !== ($tmp = mysql_fetch_field($res, PHP_INT_MAX - 1)))
        !            43:                printf("[006] Expecting boolean/false got %s/%s\n", gettype($tmp), var_export($tmp, true));
        !            44: 
        !            45:        mysql_free_result($res);
        !            46: 
        !            47:        if (false !== ($tmp = mysql_fetch_field($res)))
        !            48:                printf("[007] Expecting boolean/false, got %s/%s\n", gettype($tmp), var_export($tmp, true));
        !            49: 
        !            50:        $types = array(
        !            51:                'BIT'               => array(1, 'int'),
        !            52:                'TINYINT'           => array(1, 'int'),
        !            53:                'BOOL'              => array('true', 'int'),
        !            54:                'BOOL'              => array(1, 'int'),
        !            55:                'SMALLINT'          => array(32767, 'int'),
        !            56:                'MEDIUMINT'         => array(8388607, 'int'),
        !            57:                'INT'               => array(100, 'int'),
        !            58:                'BIGINT'            => array(100, 'int'),
        !            59:                'FLOAT'             => array(100, 'real'),
        !            60:                'DOUBLE'            => array(100, 'real'),
        !            61:                'DECIMAL'           => array(100, 'real'),
        !            62:                'DATE'              => array(@date('Y-m-d'), 'date'),
        !            63:                'DATETIME'          => array(@date('Y-m-d H:i:s'), 'datetime'),
        !            64:                'TIMESTAMP'         => array(@date('Y-m-d H:i:s'), 'timestamp'),
        !            65:                'TIME'              => array(@date('H:i:s'), 'time'),
        !            66:                'YEAR'              => array(@date('Y'), 'year'),
        !            67:                'CHAR(1)'           => array('a', 'string'),
        !            68:                'VARCHAR(1)'        => array('a', 'string'),
        !            69:                'BINARY(1)'         => array('a', 'string'),
        !            70:                'VARBINARY(1)'      => array('a', 'string'),
        !            71:                'TINYBLOB'          => array('a', 'blob'),
        !            72:                'TINYTEXT'          => array('a', 'blob'),
        !            73:                'BLOB'              => array('a', 'blob'),
        !            74:                'TEXT'              => array('a', 'blob'),
        !            75:                'MEDIUMBLOB'        => array('a', 'blob'),
        !            76:                'MEDIUMTEXT'        => array('a', 'blob'),
        !            77:                'LONGBLOB'          => array('a', 'blob'),
        !            78:                'LONGTEXT'          => array('a', 'blob'),
        !            79:                'ENUM("a", "b")'    => array('a', 'string'), /* !!! */
        !            80:                'SET("a", "b")'     => array('a', 'string'), /* !!! */
        !            81:        );
        !            82: 
        !            83:        foreach ($types as $type_name => $type_desc) {
        !            84:                if (!mysql_query("DROP TABLE IF EXISTS test", $link))
        !            85:                        printf("[008/%s] [%d] %s\n", $type_name, mysql_errno($link), mysql_error($link));
        !            86:                if (!mysql_query(sprintf("CREATE TABLE test(id INT, label %s) ENGINE = %s", $type_name, $engine), $link)) {
        !            87:                        // server and/or engine might not support the data type
        !            88:                        continue;
        !            89:                }
        !            90: 
        !            91:                if (is_string($type_desc[0]))
        !            92:                        $insert = sprintf("INSERT INTO test(id, label) VALUES (1, '%s')", $type_desc[0]);
        !            93:                else
        !            94:                        $insert = sprintf("INSERT INTO test(id, label) VALUES (1, %s)", $type_desc[0]);
        !            95: 
        !            96:                if (!mysql_query($insert, $link)) {
        !            97:                        if (1366 == mysql_errno($link)) {
        !            98:                                /* Strict SQL mode - 1366, Incorrect integer value: 'true' for column 'label' at row 1 */
        !            99:                                continue;
        !           100:                        }
        !           101:                        printf("[009/%s] [%d] %s\n", $type_name, mysql_errno($link), mysql_error($link));
        !           102:                        continue;
        !           103:                }
        !           104:                if (!$res = mysql_query("SELECT id, label FROM test", $link)) {
        !           105:                        printf("[010/%s] [%d] %s\n", $type_name, mysql_errno($link), mysql_error($link));
        !           106:                        continue;
        !           107:                }
        !           108:                if (!$tmp = mysql_fetch_field($res, 1)) {
        !           109:                        printf("[011/%s] [%d] %s\n", $type_name, mysql_errno($link), mysql_error($link));
        !           110:                }
        !           111: 
        !           112:                if ($type_desc[1] != $tmp->type) {
        !           113:                        printf("[012/%s] Expecting type '%s' got '%s'\n", $type_name, $type_desc[1], $tmp->type);
        !           114:                }
        !           115:                mysql_free_result($res);
        !           116:        }
        !           117: 
        !           118:        if (!mysql_query("DROP TABLE IF EXISTS test", $link))
        !           119:                printf("[013] [%d] %s\n", mysql_errno($link), mysql_error($link));
        !           120: 
        !           121:        if (!mysql_query("CREATE TABLE test(id INT DEFAULT 1)"))
        !           122:                printf("[014] [%d] %s\n", mysql_errno($link), mysql_error($link));
        !           123: 
        !           124:        if (!mysql_query("INSERT INTO test(id) VALUES (2)"))
        !           125:                printf("[015] [%d] %s\n", mysql_errno($link), mysql_error($link));
        !           126: 
        !           127:        if (!$res = mysql_query("SELECT id FROM test", $link)) {
        !           128:                printf("[016] [%d] %s\n", mysql_errno($link), mysql_error($link));
        !           129:        }
        !           130: 
        !           131:        var_dump(mysql_fetch_field($res));
        !           132:        mysql_free_result($res);
        !           133: 
        !           134:        if (!$res = mysql_query("SELECT id FROM test", $link)) {
        !           135:                printf("[017] [%d] %s\n", mysql_errno($link), mysql_error($link));
        !           136:        }
        !           137:        $res = mysql_list_fields($db, 'test');
        !           138:        $found = false;
        !           139:        while ($tmp = mysql_fetch_field($res)) {
        !           140:                if ($tmp->name == 'id') {
        !           141:                        printf("Fetch field from mysql_list_fields result set.\n");
        !           142:                        $found = true;
        !           143:                        var_dump($tmp);
        !           144:                }
        !           145:        }
        !           146:        if (!$found)
        !           147:                printf("[018] mysqli_list_fields result set processing has failed.\n");
        !           148: 
        !           149:        mysql_free_result($res);
        !           150: 
        !           151:        mysql_close($link);
        !           152:        print "done!";
        !           153: ?>
        !           154: --CLEAN--
        !           155: <?php
        !           156: require_once("clean_table.inc");
        !           157: ?>
        !           158: --EXPECTF--
        !           159: object(stdClass)#%d (13) {
        !           160:   [%u|b%"name"]=>
        !           161:   %unicode|string%(2) "ID"
        !           162:   [%u|b%"table"]=>
        !           163:   %unicode|string%(4) "TEST"
        !           164:   [%u|b%"def"]=>
        !           165:   %unicode|string%(0) ""
        !           166:   [%u|b%"max_length"]=>
        !           167:   int(1)
        !           168:   [%u|b%"not_null"]=>
        !           169:   int(1)
        !           170:   [%u|b%"primary_key"]=>
        !           171:   int(1)
        !           172:   [%u|b%"multiple_key"]=>
        !           173:   int(0)
        !           174:   [%u|b%"unique_key"]=>
        !           175:   int(0)
        !           176:   [%u|b%"numeric"]=>
        !           177:   int(1)
        !           178:   [%u|b%"blob"]=>
        !           179:   int(0)
        !           180:   [%u|b%"type"]=>
        !           181:   %unicode|string%(3) "int"
        !           182:   [%u|b%"unsigned"]=>
        !           183:   int(0)
        !           184:   [%u|b%"zerofill"]=>
        !           185:   int(0)
        !           186: }
        !           187: object(stdClass)#%d (13) {
        !           188:   [%u|b%"name"]=>
        !           189:   %unicode|string%(5) "label"
        !           190:   [%u|b%"table"]=>
        !           191:   %unicode|string%(4) "TEST"
        !           192:   [%u|b%"def"]=>
        !           193:   %unicode|string%(0) ""
        !           194:   [%u|b%"max_length"]=>
        !           195:   int(1)
        !           196:   [%u|b%"not_null"]=>
        !           197:   int(0)
        !           198:   [%u|b%"primary_key"]=>
        !           199:   int(0)
        !           200:   [%u|b%"multiple_key"]=>
        !           201:   int(0)
        !           202:   [%u|b%"unique_key"]=>
        !           203:   int(0)
        !           204:   [%u|b%"numeric"]=>
        !           205:   int(0)
        !           206:   [%u|b%"blob"]=>
        !           207:   int(0)
        !           208:   [%u|b%"type"]=>
        !           209:   %unicode|string%(6) "string"
        !           210:   [%u|b%"unsigned"]=>
        !           211:   int(0)
        !           212:   [%u|b%"zerofill"]=>
        !           213:   int(0)
        !           214: }
        !           215: bool(false)
        !           216: 
        !           217: Warning: mysql_fetch_field(): Bad field offset in %s on line %d
        !           218: 
        !           219: Warning: mysql_fetch_field(): %d is not a valid MySQL result resource in %s on line %d
        !           220: object(stdClass)#%d (13) {
        !           221:   [%u|b%"name"]=>
        !           222:   %unicode|string%(2) "id"
        !           223:   [%u|b%"table"]=>
        !           224:   %unicode|string%(4) "test"
        !           225:   [%u|b%"def"]=>
        !           226:   %unicode|string%(0) ""
        !           227:   [%u|b%"max_length"]=>
        !           228:   int(1)
        !           229:   [%u|b%"not_null"]=>
        !           230:   int(0)
        !           231:   [%u|b%"primary_key"]=>
        !           232:   int(0)
        !           233:   [%u|b%"multiple_key"]=>
        !           234:   int(0)
        !           235:   [%u|b%"unique_key"]=>
        !           236:   int(0)
        !           237:   [%u|b%"numeric"]=>
        !           238:   int(1)
        !           239:   [%u|b%"blob"]=>
        !           240:   int(0)
        !           241:   [%u|b%"type"]=>
        !           242:   %unicode|string%(3) "int"
        !           243:   [%u|b%"unsigned"]=>
        !           244:   int(0)
        !           245:   [%u|b%"zerofill"]=>
        !           246:   int(0)
        !           247: }
        !           248: Fetch field from mysql_list_fields result set.
        !           249: object(stdClass)#%d (13) {
        !           250:   [%u|b%"name"]=>
        !           251:   %unicode|string%(2) "id"
        !           252:   [%u|b%"table"]=>
        !           253:   %unicode|string%(4) "test"
        !           254:   [%u|b%"def"]=>
        !           255:   %unicode|string%(1) "1"
        !           256:   [%u|b%"max_length"]=>
        !           257:   int(0)
        !           258:   [%u|b%"not_null"]=>
        !           259:   int(0)
        !           260:   [%u|b%"primary_key"]=>
        !           261:   int(0)
        !           262:   [%u|b%"multiple_key"]=>
        !           263:   int(0)
        !           264:   [%u|b%"unique_key"]=>
        !           265:   int(0)
        !           266:   [%u|b%"numeric"]=>
        !           267:   int(1)
        !           268:   [%u|b%"blob"]=>
        !           269:   int(0)
        !           270:   [%u|b%"type"]=>
        !           271:   %unicode|string%(3) "int"
        !           272:   [%u|b%"unsigned"]=>
        !           273:   int(0)
        !           274:   [%u|b%"zerofill"]=>
        !           275:   int(0)
        !           276: }
        !           277: done!

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>