Annotation of embedaddon/php/ext/mysql/tests/mysql_field_flags.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: mysql_field_flags()
! 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: if (!is_null($tmp = @mysql_field_flags()))
! 16: printf("[001] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp);
! 17:
! 18: if (null !== ($tmp = @mysql_field_flags($link)))
! 19: printf("[002] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp);
! 20:
! 21: require('table.inc');
! 22: if (!$res = mysql_query("SELECT id, label FROM test ORDER BY id LIMIT 2", $link)) {
! 23: printf("[003] [%d] %s\n", mysql_errno($link), mysql_error($link));
! 24: }
! 25:
! 26: if (NULL !== ($tmp = mysql_field_flags($res)))
! 27: printf("[004] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp);
! 28:
! 29: if (false !== ($tmp = mysql_field_flags($res, -1)))
! 30: printf("[005] Expecting boolean/false, got %s/%s\n", gettype($tmp), $tmp);
! 31:
! 32: if (!is_string($tmp = mysql_field_flags($res, 0)) || empty($tmp))
! 33: printf("[006] Expecting non empty string, got %s/%s\n", gettype($tmp), $tmp);
! 34:
! 35: if ((version_compare(PHP_VERSION, '5.9.9', '>') == 1) && !is_unicode($tmp)) {
! 36: printf("[007] Check the unicode support!\n");
! 37: var_inspect($tmp);
! 38: }
! 39:
! 40: if (false !== ($tmp = mysql_field_flags($res, 2)))
! 41: printf("[008] Expecting boolean/false, got %s/%s\n", gettype($tmp), $tmp);
! 42:
! 43: mysql_free_result($res);
! 44:
! 45: $version = mysql_get_server_info($link);
! 46: if (!preg_match('@(\d+)\.(\d+)\.(\d+)@ism', $version, $matches))
! 47: printf("[009] Cannot get server version\n");
! 48: $version = ($matches[1] * 100) + ($matches[2] * 10) + $matches[3];
! 49:
! 50: $tables = array(
! 51: 'label INT, UNIQUE KEY (label)' => array(
! 52: array('label', '1'),
! 53: 'label' => array(($version < 500) ? 'multiple_key' : 'unique_key')
! 54: ),
! 55: 'labela INT, label2 CHAR(1), KEY keyname (labela, label2)' => array(
! 56: array('labela, label2', "1, 'a'"),
! 57: 'labela' => array('multiple_key'),
! 58: ),
! 59: 'label1 BLOB' => array(
! 60: array('label1', "'blob'"),
! 61: 'label1' => array('blob', 'binary'),
! 62: ),
! 63: 'label1 INT UNSIGNED' => array(
! 64: array('label1', '100'),
! 65: 'label1' => array('unsigned'),
! 66: ),
! 67: 'label1 INT UNSIGNED NOT NULL AUTO INCREMENT' => array(
! 68: array('label1', '100'),
! 69: 'label1' => array('auto_increment',
! 70: 'unsigned'),
! 71: ),
! 72: 'label1 ENUM("a", "b")' => array(
! 73: array('label1', "'a'"),
! 74: 'label1' => array('enum'),
! 75: ),
! 76: 'label1 SET("a", "b")' => array(
! 77: array('label1', "'a'"),
! 78: 'label1' => array('set'),
! 79: ),
! 80: 'label1 TIMESTAMP' => array(
! 81: array('label1', sprintf("'%s'", @date("Y-m-d H:i:s"))),
! 82: 'label1' => array(
! 83: 'timestamp',
! 84: 'unsigned',
! 85: 'zerofill',
! 86: 'binary',
! 87: 'not_null'),
! 88: ),
! 89: );
! 90:
! 91: foreach ($tables as $columns => $expected) {
! 92: if (!mysql_query("DROP TABLE IF EXISTS test", $link)) {
! 93: printf("[010/%s] [%d] %s\n", $columns, mysql_errno($link), mysql_error($link));
! 94: continue;
! 95: }
! 96: $sql = sprintf("CREATE TABLE test(id INT, %s) ENGINE = %s", $columns, $engine);
! 97: if (!@mysql_query($sql, $link)) {
! 98: // server or engine might not support this
! 99: continue;
! 100: }
! 101:
! 102: reset($expected);
! 103: list($k, $values) = each($expected);
! 104: $sql = sprintf("INSERT INTO test(id, %s) VALUES (1, %s)", $values[0], $values[1]);
! 105: if (!mysql_query($sql, $link)) {
! 106: printf("[011/%s] '%s', [%d] %s\n", $columns, $sql, mysql_errno($link), mysql_error($link));
! 107: continue;
! 108: }
! 109:
! 110: if (!$res = mysql_query(sprintf("SELECT id, %s FROM test", $values[0]), $link)) {
! 111: printf("[012/%s] [%d] %s\n", $columns, mysql_errno($link), mysql_error($link));
! 112: continue;
! 113: }
! 114:
! 115: $i = 1;
! 116: while (list($field, $flags) = each($expected)) {
! 117: $tmp = mysql_field_flags($res, $i++);
! 118:
! 119: foreach ($flags as $k => $flag) {
! 120: if (!preg_match(sprintf('@\s*%s\s*@ismU', $flag), $tmp)) {
! 121: printf("[013/%s] Field '%s', flag '%s' not found, [%d] %s\n", $columns, $field, $flag, mysql_errno($link), mysql_error($link));
! 122: }
! 123: }
! 124: foreach ($flags as $k => $flag) {
! 125: $tmp = preg_replace(sprintf('@\s*%s\s*@ismU', $flag), '', $tmp);
! 126: }
! 127: if ('' != $tmp)
! 128: printf("[014/%s] Field '%s', unexpected flags '%s' found, [%d] %s\n", $columns, $field, $tmp, mysql_errno($link), mysql_error($link));
! 129: }
! 130: mysql_free_result($res);
! 131: }
! 132:
! 133: var_dump(mysql_field_flags($res, 0));
! 134:
! 135: mysql_close($link);
! 136: print "done!";
! 137: ?>
! 138: --CLEAN--
! 139: <?php
! 140: require_once("clean_table.inc");
! 141: ?>
! 142: --EXPECTF--
! 143: Warning: mysql_field_flags() expects exactly 2 parameters, 1 given in %s on line %d
! 144:
! 145: Warning: mysql_field_flags(): Field -1 is invalid for MySQL result index %d in %s on line %d
! 146:
! 147: Warning: mysql_field_flags(): Field 2 is invalid for MySQL result index %d in %s on line %d
! 148:
! 149: Warning: mysql_field_flags(): %d is not a valid MySQL result resource in %s on line %d
! 150: bool(false)
! 151: done!
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>