메타데이터 가져오기

테이블 메타데이터

이 함수를 사용하면 테이블 정보를 가져올 수 있습니다.

데이터베이스의 테이블 나열

$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()

필드 이름이 포함된 배열을 반환합니다. 이 쿼리는 두 가지 방법으로 호출할 수 있습니다.

  1. 테이블 이름을 제공하고 $db 객체에서 호출할 수 있습니다:

    <?php
    
    $db = db_connect();
    
    $fields = $db->getFieldNames('table_name');
    
    foreach ($fields as $field) {
        echo $field;
    }
    
  2. 쿼리 결과 개체에서 함수를 호출하여 실행하는 쿼리와 관련된 필드 이름을 수집할 수 있습니다.

    <?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_nametable_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, 그렇지 않으면 부울 false

  • default - 기본값

  • primary_key - 열이 기본 키인 경우 정수 1``(기본 키가 여러 개인 경우에도 모두 정수 ``1), 그렇지 않은 경우 정수 0``(이 필드는 현재 ``MySQLiSQLite3에서만 사용할 수 있습니다.

참고

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라는 약간 다른 접미사를 사용합니다.