Respostas:
select * from information_schema.columns
where table_schema = 'your_db'
order by table_name,ordinal_position
é melhor usar a consulta a seguir para obter todos os nomes de colunas facilmente
Show columns from tablename
SELECT * FROM information_schema.columns
WHERE table_schema = DATABASE()
ORDER BY table_name, ordinal_position
Como não tenho representante suficiente para comentar, aqui está uma pequena melhoria (na minha opinião) da excelente resposta de nick rulez: substituir WHERE table_schema = 'your_db'
por WHERE table_schema = DATABASE()
.
Por mais que seja útil para qualquer outra pessoa, isso fornecerá uma lista delimitada por vírgula das colunas em cada tabela:
SELECT table_name,GROUP_CONCAT(column_name ORDER BY ordinal_position)
FROM information_schema.columns
WHERE table_schema = DATABASE()
GROUP BY table_name
ORDER BY table_name
Nota: Ao usar tabelas com um número alto de colunas e / ou com nomes longos de campos, esteja ciente do limite de group_concat_max_len , que pode causar truncamento dos dados.
<?php
$table = 'orders';
$query = "SHOW COLUMNS FROM $table";
if($output = mysql_query($query)):
$columns = array();
while($result = mysql_fetch_assoc($output)):
$columns[] = $result['Field'];
endwhile;
endif;
echo '<pre>';
print_r($columns);
echo '</pre>';
?>
Semelhante à resposta postada por @suganya, isso não responde diretamente à pergunta, mas é uma alternativa mais rápida para uma única tabela:
DESCRIBE column_name;
A questão era:
Existe uma maneira rápida de obter todos os NOMES DE COLUNAS de todas as tabelas no MySQL, sem precisar listar todas as tabelas?
SQL para obter todas as informações para cada coluna
select * from information_schema.columns
where table_schema = 'your_db'
order by table_name,ordinal_position
SQL para obter todos os NOMES DE COLUNAS
select COLUMN_NAME from information_schema.columns
where table_schema = 'your_db'
order by table_name,ordinal_position
Escrevi essa coisa boba há muito tempo e ainda a uso de vez em quando:
https://gist.github.com/kphretiq/e2f924416a326895233d
Basicamente, ele faz um "SHOW TABLES", depois um "DESCRIBE" em cada tabela e o cospe como remarcação.
Basta editar abaixo do "if name " e pronto. Você precisará ter o pymysql instalado.
Pegando carona na resposta de Nicola com algum php legível
$a = mysqli_query($conn,"select * from information_schema.columns
where table_schema = 'your_db'
order by table_name,ordinal_position");
$b = mysqli_fetch_all($a,MYSQLI_ASSOC);
$d = array();
foreach($b as $c){
if(!is_array($d[$c['TABLE_NAME']])){
$d[$c['TABLE_NAME']] = array();
}
$d[$c['TABLE_NAME']][] = $c['COLUMN_NAME'];
}
echo "<pre>",print_r($d),"</pre>";