2009-10-06 13 views

Odpowiedz

387

Można użyć DESCRIBE:

DESCRIBE my_table; 

Albo w nowszych wersjach można użyć INFORMATION_SCHEMA:

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

Albo można użyć SHOW COLUMNS:

SHOW COLUMNS FROM my_table; 
+9

DESCRIBE jest tak naprawdę skrótem do POKAŻ KOLUMNY (http: //dev.mysql.com/doc/refman/5.0/en/describe.html) – svens

+0

@ svens yeah, DESCRIBES jest prostsze, POKAŻ KOLUMNY daje więcej opcji – Greg

+8

Chciałbym zagłosować na wersję Information_Schema, ponieważ ta składnia jest obsługiwana przez większość głównych baz danych. Najlepiej uczyć się tylko w jedną stronę, jeśli musisz. – Kibbee

3

Spójrz na: funkcja

mysql_query('DESCRIBE '.$table); 
3

MySQL opisać stół powinno Cię tam, gdzie chcesz iść (umieścić swoje nazwisko w tabeli dla „stół”). Będziesz musiał przeanalizować wynik, ale to całkiem proste. Jak sobie przypominam, jeśli wykonasz to zapytanie, wynik zapytania PHP uzyskującego dostęp do funkcji, które normalnie dałyby ci parę klucz-wartość, będzie miał nazwy kolumn jako klucze. Ale minęło trochę czasu odkąd używałem PHP, więc nie trzymaj mnie. :)

+0

Jest kilka całkiem niezłych dokumentów na php.net w http://us3.php.net/manual/en/function.mysql-list-fields.php – dannysauer

32

poniższych stwierdzeń SQL są prawie równoważne:

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'] 

referencyjny: INFORMATION_SCHEMA COLUMNS

+1

Dlaczego mówisz "prawie"? – Pacerier

+1

@Pacerier Po pierwsze, drugi nie będzie działał jako podzapytanie. – WAF

+0

@ WAF, myślę, że miał na myśli coś zupełnie innego, nie to. – Pacerier

3

Jest to również, jeśli wolisz:

mysql_query('SHOW COLUMNS FROM tableName'); 
2

Funkcja mysql_list_fields mogą Cię zainteresować; ale, jak podaje instrukcja:

Ta funkcja jest przestarzała. Jest to zalecane zamiast używać mysql_query() do zamiast tego wydaje instrukcję SQL .

+0

Jak działa funkcja, jeśli nie wysyła kwerendy SQL do serwera? Dlaczego jest przestarzały? – Pacerier

3

Można również w mrówka, aby sprawdzić mysql_fetch_array(), jak w:

$rs = mysql_query($sql); 
while ($row = mysql_fetch_array($rs)) { 
//$row[0] = 'First Field'; 
//$row['first_field'] = 'First Field'; 
} 
18

Zrobiłem funkcję PDO która zwraca wszystkie nazwy kolumn w prostej tablicy.

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); 
    } 
} 

Wyjście będzie tablicą:

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

Przepraszamy za Necro ale lubię swoją funkcję;)

PS: Nie uwzględniłem klasy Core, ale możesz użyć własnej klasy .. D.S.

+0

Co jest z fetyszem? – Pacerier

+0

Nie ma nic złego w odpowiadaniu na stare pytanie w Stack Overflow. – bdsl

+1

Dzięki. Dla wyjścia użyłem w ten sposób: $ columns = $ stmt-> fetchAll (\ PDO :: FETCH_ASSOC); return array_column ($ columns, 'COLUMN_NAME'); – Ehsan

5

To rozwiązanie jest z linii poleceń mysql

mysql>USE information_schema; 

się poniżej zapytania wystarczy zmienić < --DATABASE_NAME -> do bazy danych i < --TABLENAME -> do nazwy tabeli, gdzie po prostu chcesz Pole wartości opisać polecenia

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

Inne odpowiedzi już wspomniały o tym .......... – Pacerier

3

to również zauważyć, że można użyć
EXPLAIN table_name który jest synonimem DESCRIBE table_name i SHOW COLUMNS FROM table_name , chociaż EXPLAIN jest częściej używany do uzyskiwania informacji o planie wykonania kwerendy.

5

Jak o tym:

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; 
1

ten pracował dla mnie ..

$sql = "desc MyTableName"; 
$result = @mysql_query($sql); 
while($row = @mysql_fetch_array($result)){ 
    echo $row[0]."<br>"; 
} 
1

można dostać całą strukturę tabeli, używając następującego prostego polecenia.

DESC TableName 

lub możesz użyć następującego zapytania.

SHOW COLUMNS FROM TableName 
1

w mysql, aby uzyskać kolumny szczegóły i strukturę tabeli autorem następujących słów kluczowych lub zapytań

1. DESC table_name

2. DESCRIBE table_name

3. SHOW COLUMNS FROM table_name

4. SHOW create table table_name;

5. EXPLAIN table_name

1
$col = $db->query("SHOW COLUMNS FROM category"); 

while ($fildss = $col->fetch_array()) 
{    
    $filds[] = '"{'.$fildss['Field'].'}"'; 
    $values[] = '$rows->'.$fildss['Field'].''; 
} 

if($type == 'value') 
{ 
    return $values = implode(',', $values); 
} 
else { 
    return $filds = implode(',', $filds); 
} 
+1

Aby być bardziej pomocnym dla przyszłych użytkowników, proszę podać kontekst, w którym można znaleźć odpowiedź, a nie tylko zrzut kodu. –

1

Potrzebowałem nazwy kolumn w postaci płaskiej tablicy, podczas gdy inne odpowiedzi zwrócony tablice asocjacyjne, więc użyłem:

$con = mysqli_connect('localhost',$db_user,$db_pw,$db_name); 
$table = 'people'; 

/** 
* Get the column names for a mysql table 
**/ 

function get_column_names($con, $table) { 
    $sql = 'DESCRIBE '.$table; 
    $result = mysqli_query($con, $sql); 

    $rows = array(); 
    while($row = mysqli_fetch_assoc($result)) { 
    $rows[] = $row['Field']; 
    } 

    return $rows; 
} 

$col_names = function get_column_names($con, $table); 

$ col_names wynosi teraz:

(
    [0] => name 
    [1] => parent 
    [2] => number 
    [3] => chart_id 
    [4] => type 
    [5] => id 
) 
1

Mam napisać prosty skrypt php, aby pobrać kolumny tabeli poprzez PHP: Show_table_columns.php

Ciesz się!

+0

Proszę zamieścić rzeczywistą odpowiedź tutaj i wykorzystywać tylko jako przyczynę/odniesienie – ChrisF

Powiązane problemy