PHP MySQLi 函数

PHP mysqli_result::fetch_fields() / mysqli_fetch_fields() 函数返回表示字段的对象数组结果集。

此函数类似于 mysqli_fetch_field() 函数,只不过不是为每个字段一次返回一个对象,而是将列作为对象数组返回。

语法

//面向对象风格
public mysqli_result::fetch_fields()

//面向过程风格
mysqli_fetch_fields(result)

参数

结果 必填。 仅适用于面向过程风格:指定 mysqli_query()、mysqli_store_result()、mysqli_use_result() 或 mysqli_stmt_get_result() 返回的 mysqli_result 对象。

返回值

返回包含字段定义信息的对象数组。

对象属性

属性描述
名称列的名称
orgname原始列名称(如果指定了别名)
名称该字段所属的表(如果未计算)
orgtable指定别名时的原始表名称
max_length结果集字段的最大宽度
length字段的宽度,以字节为单位,如表定义中所指定。请注意,此数字(字节)可能与表定义值(字符)不同,具体取决于所使用的字符集。例如,字符集 utf8 每个字符有 3 个字节,因此 varchar(10) 对于 utf8(10*3)将返回长度 30,但对于 latin1(10*1)则返回 10。
charsetnr字段的字符集编号(id)
标志表示的整数字段的位标志
类型用于此字段的数据类型
小数使用的小数位数(对于整数字段)

示例:面向对象样式

下面的示例显示了 mysqli_result::fetch_fields() 方法的用法。

<?php
//建立与数据库的连接
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_errno) {
  echo "Failed to connect to MySQL: ". $mysqli->connect_error;
  exit();
}

//从数据库获取查询结果
$sql = "SELECT Name, Age FROM Employee ORDER BY Age";

if ($result = $mysqli->query($sql)) {

  //获取所有列的字段信息
  $finfo = $result->fetch_fields();

  foreach ($finfo as $val) {
    printf("Name:     %s\n", $val->name);
    printf("Table:    %s\n", $val->table);
    printf("Max. Len: %d\n\n", $val->max_length);
  }

  //释放与结果相关的内存
  $result->close();
}

//关闭连接
$mysqli->close();
?>

上述代码的输出将类似于:

Name:     Name
Table:    Employee
Max. Len: 50

Name:     Age
Table:    Employee
Max. Len: 10

示例:面向过程风格

下面的示例显示了 mysqli_fetch_fields() 函数的用法。

<?php
//建立与数据库的连接
$mysqli = mysqli_connect("localhost", "user", "password", "database");
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: ". mysqli_connect_error();
  exit();
}

//从数据库获取查询结果
$sql = "SELECT Name, Age FROM Employee ORDER BY Age";

if ($result = mysqli_query($mysqli, $sql)) {

  //获取所有列的字段信息
  $finfo = mysqli_fetch_fields($result);

  foreach ($finfo as $val) {
    printf("Name:     %s\n", $val->name);
    printf("Table:    %s\n", $val->table);
    printf("Max. Len: %d\n\n", $val->max_length);
  }


  //释放与结果相关的内存
  mysqli_free_result($result);
}

//关闭连接
mysqli_close($mysqli);
?>

上述代码的输出将类似至:

Name:     Name
Table:    Employee
Max. Len: 50

Name:     Age
Table:    Employee
Max. Len: 10