# 数据库元数据

## 表元数据

下面这些方法用于获取表信息：

### 列出数据库的所有表

$this->db->list_tables();

该方法返回一个包含你当前连接的数据库的所有表名称的数组。例如:

    $tables = $this->db->list_tables();

    foreach ($tables as $table)
    {
        echo $table;
    }

### 检测表是否存在

$this->db->table_exists();

有时候，在对某个表执行操作之前先判断该表是否存在将是很有用的。 该函数返回一个布尔值：TRUE / FALSE。使用示例:

    if ($this->db->table_exists('table_name'))
    {
        // some code...
    }

注解

使用你要查找的表名替换掉 table_name

## 字段元数据

### 列出表的所有列

$this->db->list_fields()

该方法返回一个包含字段名称的数组。有两种不同的调用方式：

1. 将表名称作为参数传入 $this->db->list_fields():

       $fields = $this->db->list_fields('table_name');

       foreach ($fields as $field)
       {
           echo $field;
       }

2. 你可以从任何查询结果对象上调用该方法，获取查询返回的所有字段:

       $query = $this->db->query('SELECT * FROM some_table');

       foreach ($query->list_fields() as $field)
       {
           echo $field;
       }

### 检测表中是否存在某字段

$this->db->field_exists()

有时候，在执行一个操作之前先确定某个字段是否存在将会有很用。 该方法返回一个布尔值：TRUE / FALSE。使用示例:

    if ($this->db->field_exists('field_name', 'table_name'))
    {
        // some code...
    }

注解

使用你要查找的字段名替换掉 field_name ，然后使用 你要查找的表名替换掉 table_name 。

### 获取字段的元数据

$this->db->field_data()

该方法返回一个包含了字段信息的对象数组。

获取字段名称或相关的元数据，如数据类型，最大长度等等， 在有些时候也是非常有用的。

注解

并不是所有的数据库都支持元数据。

使用示例:

    $fields = $this->db->field_data('table_name');

    foreach ($fields as $field)
    {
        echo $field->name;
        echo $field->type;
        echo $field->max_length;
        echo $field->primary_key;
    }

如果你已经执行了一个查询，你也可以在查询结果对象上调用该方法获取 返回结果中的所有字段的元数据:

    $query = $this->db->query("YOUR QUERY");
    $fields = $query->field_data();

如果你的数据库支持，该函数获取的字段信息将包括下面这些：

- name - 列名称
- max_length - 列的最大长度
- primary_key - 等于1的话表示此列是主键
- type - 列的数据类型