1--TEST-- 2mysqli_fetch_field() 3--SKIPIF-- 4<?php 5require_once('skipif.inc'); 6require_once('skipifemb.inc'); 7require_once('skipifconnectfailure.inc'); 8?> 9--FILE-- 10<?php 11 require_once("connect.inc"); 12 13 $tmp = NULL; 14 $link = NULL; 15 16 // Note: no SQL type tests, internally the same function gets used as for mysqli_fetch_array() which does a lot of SQL type test 17 if (!is_null($tmp = @mysqli_fetch_field())) 18 printf("[001] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp); 19 20 if (!is_null($tmp = @mysqli_fetch_field($link))) 21 printf("[002] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp); 22 23 require('table.inc'); 24 25 $charsets = my_get_charsets($link); 26 if (!$res = mysqli_query($link, "SELECT id AS ID, label FROM test AS TEST ORDER BY id LIMIT 1")) { 27 printf("[003] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 28 } 29 30 /* ID column, binary charset */ 31 $tmp = mysqli_fetch_field($res); 32 var_dump($tmp); 33 34 /* label column, result set charset */ 35 $tmp = mysqli_fetch_field($res); 36 var_dump($tmp); 37 if ($tmp->charsetnr != $charsets['results']['nr']) { 38 printf("[004] Expecting charset %s/%d got %d\n", 39 $charsets['results']['charset'], 40 $charsets['results']['nr'], $tmp->charsetnr); 41 } 42 if ($tmp->length != (1 * $charsets['results']['maxlen'])) { 43 printf("[005] Expecting length %d got %d\n", 44 $charsets['results']['maxlen'], 45 $tmp->max_length); 46 } 47 if ($tmp->db != $db) { 48 printf("011] Expecting database '%s' got '%s'\n", 49 $db, $tmp->db); 50 } 51 52 var_dump(mysqli_fetch_field($res)); 53 54 mysqli_free_result($res); 55 56 // Read http://bugs.php.net/bug.php?id=42344 on defaults! 57 if (NULL !== ($tmp = mysqli_fetch_field($res))) 58 printf("[006] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp); 59 60 if (!mysqli_query($link, "DROP TABLE IF EXISTS test")) 61 printf("[007] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 62 63 if (!mysqli_query($link, "CREATE TABLE test(id INT NOT NULL DEFAULT 1)")) 64 printf("[008] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 65 66 if (!mysqli_query($link, "INSERT INTO test(id) VALUES (2)")) 67 printf("[009] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 68 69 if (!$res = mysqli_query($link, "SELECT id as _default_test FROM test")) { 70 printf("[010] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 71 } 72 var_dump(mysqli_fetch_assoc($res)); 73 /* binary */ 74 var_dump(mysqli_fetch_field($res)); 75 mysqli_free_result($res); 76 77 mysqli_close($link); 78 79 print "done!"; 80?> 81--CLEAN-- 82<?php 83 require_once("clean_table.inc"); 84?> 85--EXPECTF-- 86object(stdClass)#%d (13) { 87 [%u|b%"name"]=> 88 %unicode|string%(2) "ID" 89 [%u|b%"orgname"]=> 90 %unicode|string%(2) "id" 91 [%u|b%"table"]=> 92 %unicode|string%(4) "TEST" 93 [%u|b%"orgtable"]=> 94 %unicode|string%(%d) "%s" 95 [%u|b%"def"]=> 96 %unicode|string%(0) "" 97 [%u|b%"db"]=> 98 %unicode|string%(%d) "%s" 99 [%u|b%"catalog"]=> 100 %unicode|string%(%d) "%s" 101 [%u|b%"max_length"]=> 102 int(1) 103 [%u|b%"length"]=> 104 int(11) 105 [%u|b%"charsetnr"]=> 106 int(63) 107 [%u|b%"flags"]=> 108 int(49155) 109 [%u|b%"type"]=> 110 int(3) 111 [%u|b%"decimals"]=> 112 int(0) 113} 114object(stdClass)#%d (13) { 115 [%u|b%"name"]=> 116 %unicode|string%(5) "label" 117 [%u|b%"orgname"]=> 118 %unicode|string%(5) "label" 119 [%u|b%"table"]=> 120 %unicode|string%(4) "TEST" 121 [%u|b%"orgtable"]=> 122 %unicode|string%(%d) "%s" 123 [%u|b%"def"]=> 124 %unicode|string%(0) "" 125 [%u|b%"db"]=> 126 %unicode|string%(%d) "%s" 127 [%u|b%"catalog"]=> 128 %unicode|string%(%d) "%s" 129 [%u|b%"max_length"]=> 130 int(%d) 131 [%u|b%"length"]=> 132 int(%d) 133 [%u|b%"charsetnr"]=> 134 int(%d) 135 [%u|b%"flags"]=> 136 int(0) 137 [%u|b%"type"]=> 138 int(254) 139 [%u|b%"decimals"]=> 140 int(0) 141} 142bool(false) 143 144Warning: mysqli_fetch_field(): Couldn't fetch mysqli_result in %s on line %d 145array(1) { 146 [%u|b%"_default_test"]=> 147 %unicode|string%(1) "2" 148} 149object(stdClass)#%d (13) { 150 [%u|b%"name"]=> 151 %unicode|string%(13) "_default_test" 152 [%u|b%"orgname"]=> 153 %unicode|string%(2) "id" 154 [%u|b%"table"]=> 155 %unicode|string%(%d) "%s" 156 [%u|b%"orgtable"]=> 157 %unicode|string%(%d) "%s" 158 [%u|b%"def"]=> 159 %unicode|string%(0) "" 160 [%u|b%"db"]=> 161 %unicode|string%(%d) "%s" 162 [%u|b%"catalog"]=> 163 %unicode|string%(%d) "%s" 164 [%u|b%"max_length"]=> 165 int(1) 166 [%u|b%"length"]=> 167 int(11) 168 [%u|b%"charsetnr"]=> 169 int(63) 170 [%u|b%"flags"]=> 171 int(32769) 172 [%u|b%"type"]=> 173 int(3) 174 [%u|b%"decimals"]=> 175 int(0) 176} 177done!