--TEST--
mysqli_fetch_fields()
--SKIPIF--
<?php
require_once('skipif.inc');
require_once(
'skipifemb.inc');
require_once(
'skipifconnectfailure.inc');
?>
--FILE--
<?php
    
require_once("connect.inc");

    
$tmp    NULL;
    
$link   NULL;

    
// Note: no SQL type tests, internally the same function gets used as for mysqli_fetch_array() which does a lot of SQL type test
    
if (!is_null($tmp = @mysqli_fetch_fields()))
        
printf("[001] Expecting NULL, got %s/%s\n"gettype($tmp), $tmp);

    if (!
is_null($tmp = @mysqli_fetch_fields($link)))
        
printf("[002] Expecting NULL, got %s/%s\n"gettype($tmp), $tmp);

    require(
'table.inc');
    
$charsets my_get_charsets($link);

    if (!
$res mysqli_query($link"SELECT id AS ID, label FROM test AS TEST ORDER BY id LIMIT 1")) {
        
printf("[003] [%d] %s\n"mysqli_errno($link), mysqli_error($link));
    }

    
$fields mysqli_fetch_fields($res);
    foreach (
$fields as $k => $field) {
        
var_dump($field);
        switch (
$k) {
            case 
1:
                
/* label column, result set charset */
                
if ($field->charsetnr != $charsets['results']['nr']) {
                    
printf("[004] Expecting charset %s/%d got %d\n",
                        
$charsets['results']['charset'],
                        
$charsets['results']['nr'], $field->charsetnr);
                }
                if (
$field->length != ($charsets['results']['maxlen'])) {
                    
printf("[005] Expecting length %d got %d\n",
                        
$charsets['results']['maxlen'],
                        
$field->max_length);
                }
                break;
        }
    }

    
mysqli_free_result($res);

    if (
NULL !== ($tmp mysqli_fetch_fields($res)))
        
printf("[004] Expecting NULL, got %s/%s\n"gettype($tmp), $tmp);

    
mysqli_close($link);
    print 
"done!";
?>
--CLEAN--
<?php
    
require_once("clean_table.inc");
?>
--EXPECTF--
object(stdClass)#%d (13) {
  [%u|b%"name"]=>
  %unicode|string%(2) "ID"
  [%u|b%"orgname"]=>
  %unicode|string%(2) "id"
  [%u|b%"table"]=>
  %unicode|string%(4) "TEST"
  [%u|b%"orgtable"]=>
  %unicode|string%(%d) "%s"
  [%u|b%"def"]=>
  %unicode|string%(0) ""
  [%u|b%"db"]=>
  %unicode|string%(%d) "%s"
  [%u|b%"catalog"]=>
  %unicode|string%(%d) "%s"
  [%u|b%"max_length"]=>
  int(1)
  [%u|b%"length"]=>
  int(11)
  [%u|b%"charsetnr"]=>
  int(63)
  [%u|b%"flags"]=>
  int(49155)
  [%u|b%"type"]=>
  int(3)
  [%u|b%"decimals"]=>
  int(0)
}
object(stdClass)#%d (13) {
  [%u|b%"name"]=>
  %unicode|string%(5) "label"
  [%u|b%"orgname"]=>
  %unicode|string%(5) "label"
  [%u|b%"table"]=>
  %unicode|string%(4) "TEST"
  [%u|b%"orgtable"]=>
  %unicode|string%(%d) "%s"
  [%u|b%"def"]=>
  %unicode|string%(0) ""
  [%u|b%"db"]=>
  %unicode|string%(%d) "%s"
  [%u|b%"catalog"]=>
  %unicode|string%(%d) "%s"
  [%u|b%"max_length"]=>
  int(1)
  [%u|b%"length"]=>
  int(%d)
  [%u|b%"charsetnr"]=>
  int(%d)
  [%u|b%"flags"]=>
  int(0)
  [%u|b%"type"]=>
  int(254)
  [%u|b%"decimals"]=>
  int(0)
}

Warning: mysqli_fetch_fields(): Couldn't fetch mysqli_result in %s on line %d
done!