資料庫詮釋資料¶
資料表詮釋資料¶
這些函數讓你可以提取資料表的資訊。
欄位詮釋資料¶
列出資料表中的欄位¶
$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/FALSES。範例:
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; // array of field names
}
鍵值類型在你使用的資料庫中應該是唯一。例如:MySQL會為每個跟資料表有關聯的鍵值,回傳主鍵、全文索引、空間索引、或唯一索引的其中一種。
$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不會回傳欄位名稱,但對複合外來鍵會 排序 欄位。