數據庫元數據?
表元數據?
下面這些方法用于獲取表信息。
列出數據庫中的所有表?
$db->listTables();
返回一個數組,包含當前連接數據庫的全部表名稱。例如:
$tables = $db->listTables();
foreach ($tables as $table)
{
echo $table;
}
字段元數據?
列出表的所有字段?
$db->getFieldNames()
返回包含字段名稱的數組,有兩種不同的調用方式:
你可以調用 $db->object 的方法獲取表的字段:
$fields = $db->getFieldNames('table_name'); foreach ($fields as $field) { echo $field; }
你可以調用任何查詢結果對象的方法獲取所有字段:
$query = $db->query('SELECT * FROM some_table'); foreach ($query->getFieldNames() as $field) { echo $field; }
檢查表中是否存在某字段?
$db->fieldExists()
有時先確定某個字段是否存在再進行操作也比較有用, 該方法返回布爾值 TRUE/FALSE。 使用示例:
if ($db->fieldExists('field_name', 'table_name'))
{
// some code...
}
注解
將 field_name 替換為你要查找的字段名, 并且將 table_name 替換為你要查找的表的名稱
獲取字段的元數據?
$db->getFieldData()
該方法返回一個包含字段信息的對象數組。
有時,收集字段名稱或相關的元數據會很有用,例如數據類型,最大長度等。
注解
并非所有的數據庫都支持元數據。
使用示例:
$fields = $db->getFieldData('table_name');
foreach ($fields as $field)
{
echo $field->name;
echo $field->type;
echo $field->max_length;
echo $field->primary_key;
}
如果你已經進行了查詢,則可以使用結果對象而且不用提供表名:
$query = $db->query("YOUR QUERY");
$fields = $query->fieldData();
如果你的數據庫支持,則可以用此方法獲得以下數據:
- name - 字段名
- max_length - 字段的最大長度
- primary_key - 等于1的話表示此字段是主鍵
- type - 字段的數據類型
獲取表的索引?
$db->getIndexData()
返回一個包含索引信息的對象數組。
使用示例:
$keys = $db->getIndexData('table_name');
foreach ($keys as $key)
{
echo $key->name;
echo $key->type;
echo $key->fields; // 字段名的數組
}
根據數據庫不同 type 會有所區別。 例如,MySQL會返回 primary、fulltext、spatial、index 或 unique 其中之一, 每個(索引)關聯一張表。
$db->getForeignKeyData()
返回一個包含外鍵信息的對象數組。
使用示例:
$keys = $db->getForeignKeyData('table_name');
foreach ($keys as $key)
{
echo $key->constraint_name;
echo $key->table_name;
echo $key->column_name;
echo $key->foreign_table_name;
echo $key->foreign_column_name;
}
對象字段根據你用的數據庫會有不同,例如 SQLite3 不返回 column_name 字段,但會附加 sequence 字段用于解釋復合外鍵。