열 이름을 가져오기 위한 MySQL 쿼리입니까?
mysql 테이블의 모든 col 이름을 php의 배열로 가져오고 싶습니다.
이거에 대한 질문이 있나요?
가장 좋은 방법은 INFORMATION_SCHEMA 메타데이터 가상 데이터베이스를 사용하는 것입니다.특히 INFORMATION_SCHEMA.COLUMNS 테이블...
SELECT `COLUMN_NAME`
FROM `INFORMATION_SCHEMA`.`COLUMNS`
WHERE `TABLE_SCHEMA`='yourdatabasename'
AND `TABLE_NAME`='yourtablename';
매우 강력하며 텍스트를 구문 분석할 필요 없이 엄청난 양의 정보를 제공할 수 있습니다(열 유형, 열이 null인지 여부, 최대 열 크기, 문자 집합 등).
준 sqlSQL(Whereas))입니다.입SHOW ...MySQL 유유... .........)...
「」의는, 「」를 해 주세요.SHOW... 을 합니다.INFORMATION_SCHEMA표를 참조하십시오.일반적으로 MySQL 매뉴얼을 참조하십시오.
MYSQL에는 다음 쿼리를 사용할 수 있습니다.
SHOW `columns` FROM `your-table`;
다음은 위의 구문을 php로 구현하여 열 이름을 나열하는 방법의 예를 보여 줍니다.
$sql = "SHOW COLUMNS FROM your-table";
$result = mysqli_query($conn,$sql);
while($row = mysqli_fetch_array($result)){
echo $row['Field']."<br>";
}
「」의 에 대한 것에 는, 「」SHOW COLUMNS FROM TABLE방문: MySQL Reference.
두 가지 방법이 있는 것 같습니다.
DESCRIBE `tablename`
또는
SHOW COLUMNS FROM `tablename`
것은 이쪽DESCRIBE여기: http://dev.mysql.com/doc/refman/5.0/en/describe.html
나는 이것을 과거에 해 본 적이 있어요.
SELECT column_name
FROM information_schema.columns
WHERE table_name='insert table name here';
편집: 오늘은 더 나은 방법을 배웠습니다.ircmaxell의 답변을 봐주세요.
의 합니다.SHOW COLUMNS FROM table;
자세한 것은, http://dev.mysql.com/doc/refman/5.0/en/show-columns.html 를 참조해 주세요.
mysql_fetch_field()모든 열 데이터를 표시합니다.매뉴얼을 참조해 주세요.
$query = 'select * from myfield';
$result = mysql_query($query);
$i = 0;
while ($i < mysql_num_fields($result))
{
$fld = mysql_fetch_field($result, $i);
$myarray[]=$fld->name;
$i = $i + 1;
}
"경고 이 확장자는 PHP 5.5.0 이후 사용되지 않으며 향후 제거될 예정입니다.
모든 답변 중에서 가장 간단한 솔루션:
DESC `table name`
또는
DESCRIBE `table name`
또는
SHOW COLUMNS FROM `table name`
오래된 PHP 함수 "mysql_list_fields()"는 사용되지 않습니다.따라서 현재 필드 이름을 가져오는 가장 좋은 방법은 "SHOW COLUMNS FROM table_name [LIKE 'name']" 쿼리입니다.예를 들어 다음과 같습니다.
$fields = array();
$res=mysql_query("SHOW COLUMNS FROM mytable");
while ($x = mysql_fetch_assoc($res)){
$fields[] = $x['Field'];
}
foreach ($fields as $f) { echo "<br>Field name: ".$f; }
모든 테이블 구조를 몇 개의 필드로 체크하고 싶을 때는 이 코드를 사용합니다.이 쿼리에서 자세한 내용은 column_name, column_type 및 table_name을 선택합니다.column_type별 오더를 사용하기 때문에 쉽게 볼 수 있습니다.
SELECT `COLUMN_NAME`,COLUMN_TYPE,TABLE_NAME
FROM `INFORMATION_SCHEMA`.`COLUMNS`
WHERE `TABLE_SCHEMA`='yourdatabasename' order by DATA_TYPE;
더블 타입 파일만 체크하고 싶다면 쉽게 체크할 수 있습니다.
SELECT `COLUMN_NAME`,COLUMN_TYPE,TABLE_NAME,DATA_TYPE
FROM `INFORMATION_SCHEMA`.`COLUMNS`
WHERE `TABLE_SCHEMA`='yourdatabasename' AND DATA_TYPE like '%bigint%' order by DATA_TYPE;
null type 등을 허용하는 필드를 확인하려면 이 필드를 사용할 수 있습니다.
SELECT `COLUMN_NAME`,COLUMN_TYPE,TABLE_NAME,IS_NULLABLE,DATA_TYPE
FROM `INFORMATION_SCHEMA`.`COLUMNS`
WHERE `TABLE_SCHEMA`='yourdatabasename' and DATA_TYPE like '%bigint%' and IS_NULLABLE ='NO' order by COLUMN_TYPE;
당신은 더 많은 것을 확인하고 싶어하고 thik link도 당신에게 도움이 됩니다.
https://dev.mysql.com/doc/refman/5.7/en/columns-table.html
function get_col_names(){
$sql = "SHOW COLUMNS FROM tableName";
$result = mysql_query($sql);
while($record = mysql_fetch_array($result)){
$fields[] = $record['0'];
}
foreach ($fields as $value){
echo 'column name is : '.$value.'-';
}
}
return get_col_names();
이게 네가 찾던 건지 모르겠지만, 난 이게 효과가 있었어.
$query = query("DESC YourTable");
$col_names = array_column($query, 'Field');
테이블 내의 컬럼 이름/변수 이름의 단순한 배열을 문자열로 반환합니다.이것은 MySQL 쿼리를 동적으로 작성하기 위해 필요한 것입니다.PHP에서 어레이를 인덱싱하는 방법을 잘 몰라서 DESC 또는 SHOW의 결과를 어떻게 해야 할지 모르겠다는 것이 불만이었습니다.제 답변이 저 같은 초보자에게 도움이 되길 바랍니다!
방법: " " " " "print_r($col_names);
insert 문에 사용할 경우 다음 문자열이 생성됩니다.
SELECT CONCAT('(',GROUP_CONCAT(`COLUMN_NAME`),')')
FROM `INFORMATION_SCHEMA`.`COLUMNS`
WHERE `TABLE_SCHEMA`='database_name'
AND `TABLE_NAME`='table_name';
mysql 5.1(5.5가 아님)의 SHOW COLUMNS는 임시 디스크 테이블을 사용합니다.
- http://dev.mysql.com/doc/refman/5.1/en/internal-temporary-tables.html
- http://dev.mysql.com/doc/refman/5.1/en/show-columns.html
따라서 경우에 따라서는 느리다고 생각될 수 있습니다.적어도 created_tmp_disk_tables 값은 업 할 수 있습니다.연결 또는 각 페이지 요청당 하나의 임시 디스크 테이블을 상상해 보십시오.
SHOW COLUMNS는 파일 시스템 캐시를 사용하기 때문에 그다지 느리지 않습니다.Phpmyadmin은 0.5ms까지 일관되게 말합니다.워드프레스 페이지 500밀리초~1000밀리초에 비하면 아무것도 아닙니다.하지만 여전히 중요한 때가 있습니다.디스크 시스템이 관여하고 있습니다.서버가 비지 상태, 캐시가 가득 찼을 때, HDD가 정지되어 있을 때 등은, 어떠한 일이 일어나는지 알 수 없습니다.
SELECT * FROM을 통해 열 이름을 검색하는 중... LIMIT 1은 약 0.1ms이며 쿼리 캐시도 사용할 수 있습니다.
가능한 경우 show columns를 사용하지 않고 테이블에서 컬럼 이름을 가져오기 위해 최적화된 코드를 다음에 나타냅니다.
function db_columns_ar($table)
{
//returns Array('col1name'=>'col1name','col2name'=>'col2name',...)
if(!$table) return Array();
if(!is_string($table)) return Array();
global $db_columns_ar_cache;
if(!empty($db_columns_ar_cache[$table]))
return $db_columns_ar_cache[$table];
//IMPORTANT show columns creates a temp disk table
$cols=Array();
$row=db_row_ar($q1="SELECT * FROM `$table` LIMIT 1");
if($row)
{
foreach($row as $name=>$val)
$cols[$name]=$name;
}
else
{
$coldata=db_rows($q2="SHOW COLUMNS FROM `$table`");
if($coldata)
foreach($coldata as $row)
$cols[$row->Field]=$row->Field;
}
$db_columns_ar_cache[$table]=$cols;
//debugexit($q1,$q2,$row,$coldata,$cols);
return $cols;
}
주의:
- 테이블의 첫 번째 행에 메가바이트 범위의 데이터가 포함되지 않는 한 정상적으로 작동합니다.
- 함수명 db_rows 및 db_row_ar는 특정 데이터베이스 설정으로 대체해야 합니다.
WORDPRESS:
global $wpdb; $table_name=$wpdb->prefix.'posts';
foreach ( $wpdb->get_col( "DESC " . $table_name, 0 ) as $column_name ) {
var_dump( $column_name );
}
이걸 써봐 내가 개인적으로 쓰는 거야
SHOW COLUMNS FROM $table where field REGEXP 'stock_id|drug_name'
이 질문은 오래된 질문이지만 특정 쿼리의 필드 이름을 역동적으로 찾을 수 있는 방법을 찾고 있습니다(테이블의 필드뿐만이 아닙니다).그리고 사람들이 다른 관련 질문에서 주어진 과제에 대한 답변으로 계속 이것을 지목하고 있기 때문에, 저는 Gavin Simpson의 조언을 사용하여 제가 발견한 작업을 수행하는 방법을 공유합니다.
//Function to generate a HTML table from a SQL query
function myTable($obConn,$sql)
{
$rsResult = mysqli_query($obConn, $sql) or die(mysqli_error($obConn));
if(mysqli_num_rows($rsResult)>0)
{
//We start with header. >>>Here we retrieve the field names<<<
echo "<table width=\"100%\" border=\"0\" cellspacing=\"2\" cellpadding=\"0\"><tr align=\"center\" bgcolor=\"#CCCCCC\">";
$i = 0;
while ($i < mysqli_num_fields($rsResult)){
$field = mysqli_fetch_field_direct($rsResult, $i);
$fieldName=$field->name;
echo "<td><strong>$fieldName</strong></td>";
$i = $i + 1;
}
echo "</tr>";
//>>>Field names retrieved<<<
//We dump info
$bolWhite=true;
while ($row = mysqli_fetch_assoc($rsResult)) {
echo $bolWhite ? "<tr bgcolor=\"#CCCCCC\">" : "<tr bgcolor=\"#FFF\">";
$bolWhite=!$bolWhite;
foreach($row as $data) {
echo "<td>$data</td>";
}
echo "</tr>";
}
echo "</table>";
}
}
필드 이름을 배열에 삽입하도록 쉽게 수정할 수 있습니다.
간단한 사용:$sql="SELECT * FROM myTable LIMIT 1"를 사용하지 않고 임의의 테이블의 필드를 제공할 수 있습니다.SHOW COLUMNS또는 필요한 경우 추가 php 모듈(데이터 덤프 부분 포함)을 사용합니다.
이게 다른 사람에게 도움이 되길 바라.
php를 사용하는 경우 다음 gest를 사용합니다.
select 필드의 풀 정보를 결과 없이 얻을 수 있으며 다음과 같은 모든 커스텀필드를 얻을 수 있습니다.
SELECT a.name aname, b.name bname, b.*
FROM table1 a LEFT JOIN table2 b
ON a.id = b.pid;
위의 sql이 데이터를 반환하지 않으면 aname, bname, b의 다른 필드 이름도 가져옵니다.
두 줄만:
$query_info = mysqli_query($link, $data_source);
$fetch_fields_result = $query_info->fetch_fields();
이 쿼리는 테이블 이름을 지정하지 않고 데이터베이스의 모든 열 목록을 가져옵니다.다음과 같은 열 이름 목록만 반환합니다.
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_schema = 'db_name'
그러나 phpmyadmin에서 이 쿼리를 실행했을 때 일련의 오류가 표시되었습니다.그럼에도 불구하고, 효과가 있었다.그러니 조심해서 사용하세요.
필드 이름 및 유형만 필요한 경우(Excel에 쉽게 복사 붙여넣기 가능):
SELECT COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA='databasenamegoeshere'
AND DATA_TYPE='decimal' and TABLE_NAME = 'tablenamegoeshere'
제거한다.
DATA_TYPE='decimal'
모든 데이터 유형을 원하는 경우
전문가는 아니지만, 이건 나한테 효과가 있어.
$sql = "desc MyTable";
$result = @mysql_query($sql);
while($row = @mysql_fetch_array($result)){
echo $row[0]."<br>"; // returns the first column of array. in this case Field
// the below code will return a full array-> Field,Type,Null,Key,Default,Extra
// for ($c=0;$c<sizeof($row);$c++){echo @$row[$c]."<br>";}
}
SQL Server에서 이 쿼리를 시도했는데, 이 쿼리를 사용할 수 있었습니다.
SELECT name FROM sys.columns WHERE OBJECT_ID = OBJECT_ID('table_name')
의 호출DESCRIBE테이블의 모든 열을 가져오려면 정상적으로 동작하지만 필터링해야 할 경우 를 사용해야 합니다.SHOW COLUMNS FROM대신.
테이블의 모든 정보를 가져오는 PHP 함수의 예:
// get table columns (or return false if table not found)
function get_table_columns($db, $table) {
global $pdo;
if($cols = $pdo->query("DESCRIBE `$db`.`$table`")) {
if($cols = $cols->fetchAll(PDO::FETCH_ASSOC)) {
return $cols;
}
}
return false;
}
제 경우 테이블의 기본 키를 찾아야 했습니다.그래서 저는 다음과 같이 했습니다.
SHOW COLUMNS FROM `table` WHERE `Key`='PRI';
제 PHP 기능은 다음과 같습니다.
// get table Primary Key
function get_table_pk($db, $table) {
global $pdo;
$q = "SHOW COLUMNS FROM `$db`.`$table` WHERE `Key` = 'PRI'";
if($cols = $pdo->query($q)) {
if($cols = $cols->fetchAll(PDO::FETCH_ASSOC)) {
return $cols[0];
}
}
return false;
}
언급URL : https://stackoverflow.com/questions/4165195/mysql-query-to-get-column-names
'programing' 카테고리의 다른 글
| 인터넷 연결이 오프라인 상태임을 감지하시겠습니까? (0) | 2022.11.02 |
|---|---|
| MariaDB가 시스템 표준 시간대를 선택하도록 하려면 어떻게 해야 합니까? (0) | 2022.11.02 |
| 다차원 배열에서 단일 열 반환 (0) | 2022.11.02 |
| PHP를 사용하여 어레이가 비어 있는지 확인하는 방법 (0) | 2022.11.02 |
| Vue.js의 메서드 내에서 입력 포커스 이벤트를 트리거하려면 어떻게 해야 합니까? (0) | 2022.11.02 |

