17 ответов:
можно использовать описания:
DESCRIBE my_table;или в более новых версиях вы можете использовать information_schema для:
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'my_database' AND TABLE_NAME = 'my_table';или вы можете использовать ПОКАЗАТЬ СТОЛБЦЫ:
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 СТОЛБЦЫ
Я сделал функцию 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 ... )извините за некро, но мне нравится моя функция ;)
P. S. Я не включенными класс ядро, но вы можете использовать свой собственный класс.. Д. С.
это решение из командной строки mysql
mysql>USE information_schema;в приведенном ниже запросе просто измените на вашу базу данных и на ваше имя таблицы, где вы просто хотите значения полей оператора DESCRIBE
mysql> SELECT COLUMN_NAME FROM COLUMNS WHERE TABLE_SCHEMA = '<--DATABASE_NAME-->' AND TABLE_NAME='<--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;
функция MySQL опишите таблицу должно привести вас туда, куда вы хотите пойти (поместите свое имя таблицы в "таблицу"). Вам придется разобрать вывод, но это довольно легко. Насколько я помню, если вы выполните этот запрос, результат запроса PHP, обращающийся к функциям, которые обычно дают вам пару ключ-значение, будет иметь имена столбцов в качестве ключей. Но прошло некоторое время с тех пор, как я использовал PHP, так что не держите меня за это. :)
вы также можете проверить
mysql_fetch_array(), например:$rs = mysql_query($sql); while ($row = mysql_fetch_array($rs)) { //$row[0] = 'First Field'; //$row['first_field'] = 'First Field'; }
интересно также отметить, что вы можете использовать
EXPLAIN table_nameчто является синонимомDESCRIBE table_nameиSHOW COLUMNS FROM table_nameхотя объяснить чаще используется для получения информации о плане выполнения запроса.
The
mysql_list_fieldsфункция может вас заинтересовать ; но, как говорится в руководстве:эта функция устарела. Это предпочтительно использовать
mysql_query()to выдать SQL заявление.
мне нужны были имена столбцов в виде плоского массива, в то время как другие ответы возвращали ассоциативные массивы, поэтому я использовал:
$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 теперь составляет:
( [0] => name [1] => parent [2] => number [3] => chart_id [4] => type [5] => id )
это сработало для меня..
$sql = "desc MyTableName"; $result = @mysql_query($sql); while($row = @mysql_fetch_array($result)){ echo $row[0]."<br>"; }
вы можете получить всю структуру таблицы, используя следующую простую команду.
DESC TableNameили вы можете использовать следующий запрос.
SHOW COLUMNS FROM TableName
в mysql, чтобы получить детали столбцов и структуру таблицы, следуя ключевые слова или запросы
1.
DESC table_name2.
DESCRIBE table_name3.
SHOW COLUMNS FROM table_name4.
SHOW create table table_name;5.
EXPLAIN table_name
$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); }
Я написал простой PHP скрипт для извлечения столбцов таблицы через PHP: Show_table_columns.php
наслаждайтесь!
Comments