[php] MySQL에서 테이블 열 이름을 가져 오시겠습니까?

mysql에서 테이블의 열 이름을 가져 오는 방법이 있습니까? PHP를 사용하여



답변

DESCRIBE 를 사용할 수 있습니다 .

DESCRIBE my_table;

또는 최신 버전에서는 INFORMATION_SCHEMA 를 사용할 수 있습니다 .

SELECT COLUMN_NAME
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE TABLE_SCHEMA = 'my_database' AND TABLE_NAME = 'my_table';

또는 SHOW COLUMNS를 사용할 수 있습니다 .

SHOW COLUMNS FROM my_table;


답변

다음 SQL 문은 거의 동일합니다.

SELECT COLUMN_NAME
  FROM INFORMATION_SCHEMA.COLUMNS
 WHERE table_name = 'tbl_name'
  [AND table_schema = 'db_name']
  [AND column_name LIKE 'wild']

SHOW COLUMNS
FROM tbl_name
[FROM db_name]
[LIKE 'wild']

참조 : INFORMATION_SCHEMA COLUMNS


답변

모든 열 이름을 간단한 배열로 반환하는 PDO 함수를 만들었습니다.

public function getColumnNames($table){
    $sql = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = :table";
    try {
        $core = Core::getInstance();
        $stmt = $core->dbh->prepare($sql);
        $stmt->bindValue(':table', $table, PDO::PARAM_STR);
        $stmt->execute();
        $output = array();
        while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
            $output[] = $row['COLUMN_NAME'];
        }
        return $output;
    }

    catch(PDOException $pe) {
        trigger_error('Could not connect to MySQL database. ' . $pe->getMessage() , E_USER_ERROR);
    }
}

출력은 배열이됩니다 :

Array (
[0] => id
[1] => name
[2] => email
[3] => shoe_size
[4] => likes
... )

necro는 미안하지만 내 기능이 마음에 든다.)

추신 : 나는 수업 코어를 포함하지 않았지만 자신의 수업을 사용할 수 있습니다 .. DS


답변

이 솔루션은 명령 줄 mysql에서 가져온 것입니다.

mysql>USE information_schema;

아래 쿼리에서 <-DATABASE_NAME->을 데이터베이스로 변경하고 <-TABLENAME->을 DESCRIBE 문의 필드 값을 원하는 테이블 이름으로 변경하십시오.

mysql> SELECT COLUMN_NAME FROM COLUMNS WHERE TABLE_SCHEMA = '<--DATABASE_NAME-->' AND   TABLE_NAME='<--TABLENAME-->';


답변

원하는 경우 다음이 있습니다.

mysql_query('SHOW COLUMNS FROM tableName'); 


답변

이건 어때요:

SELECT @cCommand := GROUP_CONCAT( COLUMN_NAME ORDER BY column_name SEPARATOR ',\n')
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'my_database' AND TABLE_NAME = 'my_table';

SET @cCommand = CONCAT( 'SELECT ', @cCommand, ' from my_database.my_table;');
PREPARE xCommand from @cCommand;
EXECUTE xCommand;


답변

그것은 당신이 사용할 수있는 점에 유의하는 것이 흥미
EXPLAIN table_name와 동의어이다 DESCRIBE table_name하고 SHOW COLUMNS FROM table_name
있지만, EXPLAIN 더 일반적으로 쿼리 실행 계획에 대한 정보를 얻는 데 사용됩니다.