메타데이터 가져오기
테이블 메타데이터
이 함수를 사용하면 테이블 정보를 가져올 수 있습니다.
데이터베이스의 테이블 나열
$db->listTables()
현재 연결되어 있는 데이터베이스의 모든 테이블 이름을 포함하는 배열을 반환합니다. 예:
<?php
$db = db_connect();
$tables = $db->listTables();
foreach ($tables as $table) {
echo $table;
}
참고
일부 드라이버에는 이번 반품에서 제외되는 추가 시스템 테이블이 있습니다.
테이블이 존재하는지 확인
$db->tableExists()
때로는 작업을 실행하기 전에 특정 테이블이 존재하는지 여부를 아는 것이 도움이 될 수 있습니다. 부울 true/false를 반환합니다. 사용 예:
<?php
$db = db_connect();
if ($db->tableExists('table_name')) {
// some code...
}
참고
table_name을 찾고 있는 테이블 이름으로 바꾸세요.
필드 메타데이터
테이블의 필드 나열
$db->getFieldNames()
필드 이름이 포함된 배열을 반환합니다. 이 쿼리는 두 가지 방법으로 호출할 수 있습니다.
테이블 이름을 제공하고
$db객체에서 호출할 수 있습니다:<?php $db = db_connect(); $fields = $db->getFieldNames('table_name'); foreach ($fields as $field) { echo $field; }
쿼리 결과 개체에서 함수를 호출하여 실행하는 쿼리와 관련된 필드 이름을 수집할 수 있습니다.
<?php $db = db_connect(); $query = $db->query('SELECT * FROM some_table'); foreach ($query->getFieldNames() as $field) { echo $field; }
테이블에 필드가 있는지 확인
$db->fieldExists()
때로는 작업을 수행하기 전에 특정 필드가 존재하는지 여부를 아는 것이 도움이 될 수 있습니다. 부울 true/false를 반환합니다. 사용 예:
<?php
$db = db_connect();
if ($db->fieldExists('field_name', 'table_name')) {
// some code...
}
참고
field_name 및 table_name을 찾고 있는 열 이름과 테이블 이름으로 바꾸세요.
필드 메타데이터 검색
$db->getFieldData()
필드 정보가 포함된 개체 배열을 반환합니다.
때로는 필드 이름이나 열 유형, 최대 길이 등과 같은 기타 메타데이터를 수집하는 것이 도움이 될 수 있습니다.
참고
모든 데이터베이스가 메타데이터를 제공하는 것은 아닙니다.
사용 예:
<?php
$db = db_connect();
$fields = $db->getFieldData('table_name');
foreach ($fields as $field) {
echo $field->name;
echo $field->type;
echo $field->max_length;
echo $field->primary_key;
}
데이터베이스에서 지원하는 경우 이 함수에서 다음 데이터를 사용할 수 있습니다.
name- 열 이름type- 열의 유형max_length- 열의 최대 길이nullable- 열이 null을 허용하는 경우 부울true, 그렇지 않으면 부울falsedefault- 기본값primary_key- 열이 기본 키인 경우 정수1``(기본 키가 여러 개인 경우에도 모두 정수 ``1), 그렇지 않은 경우 정수0``(이 필드는 현재 ``MySQLi및SQLite3에서만 사용할 수 있습니다.
참고
v4.4.0부터 SQLSRV는 nullable을 지원했습니다.
$query->getFieldData()
이미 쿼리를 실행한 경우 테이블 이름을 제공하는 대신 결과 개체를 사용할 수 있습니다.
<?php
$db = db_connect();
$query = $db->query('YOUR QUERY');
$fields = $query->getFieldData();
참고
반환된 데이터는 $db->getFieldData()의 데이터와 다릅니다. 필요한 데이터를 얻을 수 없다면 $db->getFieldData()를 사용하세요.
테이블에 인덱스 나열
$db->getIndexData()
인덱스 정보가 포함된 객체 배열을 반환합니다.
사용 예:
<?php
$db = db_connect();
$keys = $db->getIndexData('table_name');
foreach ($keys as $key) {
echo $key->name;
echo $key->type;
echo $key->fields; // array of field names
}
키 유형은 사용 중인 데이터베이스에 따라 고유할 수 있습니다. 예를 들어 MySQL은 테이블과 연결된 각 키에 대해 기본, 전체 텍스트, 공간, 인덱스 또는 고유 중 하나를 반환합니다.
SQLite3은 PRIMARY라는 의사 인덱스를 반환합니다. 그러나 이는 특수 인덱스이므로 SQL 명령에서 사용할 수 없습니다.
$db->getForeignKeyData()
외래 키 정보가 포함된 객체 배열을 반환합니다.
사용 예:
<?php
$db = db_connect();
$keys = $db->getForeignKeyData('table_name');
foreach ($keys as $key => $object) {
echo $key === $object->constraint_name;
echo $object->constraint_name;
echo $object->table_name;
echo $object->column_name[0]; // array
echo $object->foreign_table_name;
echo $object->foreign_column_name[0]; // array
echo $object->on_delete;
echo $object->on_update;
echo $object->match;
}
외래 키는 tableprefix_table_column1_column2_foreign이라는 명명 규칙을 사용합니다. 오라클은 _fk라는 약간 다른 접미사를 사용합니다.