Gostaria de obter todos os nomes de colunas de uma tabela mysql em uma matriz em php?
Existe uma consulta para isso?
A melhor maneira é usar o banco de dados virtual de metadados INFORMATION_SCHEMA . Especificamente a tabela INFORMATION_SCHEMA.COLUMNS ...
SELECT `COLUMN_NAME`
FROM `INFORMATION_SCHEMA`.`COLUMNS`
WHERE `TABLE_SCHEMA`='yourdatabasename'
AND `TABLE_NAME`='yourtablename';
É MUITO poderoso e pode fornecer toneladas de informações sem a necessidade de analisar o texto (como tipo de coluna, se a coluna é anulável, tamanho máximo da coluna, conjunto de caracteres, etc.) ...
Ah, e é SQL padrão (Considerando que SHOW ...
é uma extensão específica do MySQL) ...
Para obter mais informações sobre a diferença entre SHOW...
e usar as INFORMATION_SCHEMA
tabelas, consulte a documentaçãoINFORMATION_SCHEMA
do MySQL em geral ...
SET @@SESSION.sql_mode = 'ANSI_QUOTES';
antes também, mas eu realmente não gosto disso. E não tenho nenhum problema com os back-ticks para delimitação de identificador. Na verdade, eu gosto deles melhor do que aspas duplas (aspas faz com que o errado consulta sensação para mim) ... A cada um o seu próprio ...Você pode usar a seguinte consulta para MYSQL:
Abaixo está o código de exemplo que mostra Como implementar a sintaxe acima no php para listar os nomes das colunas:
Para detalhes sobre a saída da
SHOW COLUMNS FROM TABLE
visita: MySQL Refrence.fonte
DESC TableName;
;-)Parece que existem 2 maneiras:
ou
Mais
DESCRIBE
aqui: http://dev.mysql.com/doc/refman/5.0/en/describe.htmlfonte
DESCRIBE
é apenas um atalho paraSHOW COLUMNS FROM
.DESC
é ainda mais curta paraDESCRIBE
!Eu fiz isso no passado.
fonte
Edit : Hoje eu aprendi a melhor maneira de fazer isso. Por favor, veja a resposta da ircmaxell.
Analise a saída de
SHOW COLUMNS FROM table;
Aqui está mais sobre isso aqui: http://dev.mysql.com/doc/refman/5.0/en/show-columns.html
fonte
Use
mysql_fetch_field()
para visualizar todos os dados da coluna. Veja o manual ."Aviso Esta extensão está obsoleta no PHP 5.5.0 e será removida no futuro."
fonte
mysqli_num_fields()
emysqli_fetch_field_direct()
são os métodos atualizadosUma função antiga do PHP "mysql_list_fields ()" está obsoleta. Portanto, hoje a melhor maneira de obter nomes de campos é uma consulta "SHOW COLUMNS FROM table_name [LIKE 'name']". Então, aqui está um pequeno exemplo:
fonte
fonte
Não tenho certeza se é isso que você estava procurando, mas funcionou para mim:
Isso retorna uma matriz simples dos nomes de colunas / nomes de variáveis em sua tabela ou matriz como strings, que é o que eu precisava para criar dinamicamente consultas MySQL. Minha frustração foi que eu simplesmente não sabia como indexar matrizes muito bem em PHP, então não tinha certeza do que fazer com os resultados de DESC ou SHOW. Espero que minha resposta seja útil para iniciantes como eu!
Para verificar o resultado:
print_r($col_names);
fonte
quando você quiser verificar toda a estrutura de sua tabela com alguns arquivos, use esse código. Nesta consulta, selecione column_name, column_type e table_name para obter mais detalhes. Eu uso order by column_type para que eu possa vê-lo facilmente.
Se você quiser verificar apenas o tipo duplo arquivado, poderá fazê-lo facilmente
se você quiser verificar qual campo permite o tipo nulo, etc., poderá usar este
você deseja verificar mais do que o link thik também ajudá-lo.
https://dev.mysql.com/doc/refman/5.7/en/columns-table.html
fonte
SHOW COLUMNS no mysql 5.1 (não 5.5) usa uma tabela de disco temporária.
Portanto, pode ser considerado lento em alguns casos. Pelo menos, ele pode aumentar seu valor created_tmp_disk_tables . Imagine uma tabela de disco temporária por conexão ou por cada solicitação de página.
SHOW COLUMNS não é tão lento, possivelmente porque usa o cache do sistema de arquivos. Phpmyadmin diz ~ 0.5ms de forma consistente. Isso não é nada comparado a 500ms-1000ms de servir uma página wordpress. Mas, ainda assim, há momentos em que isso importa. Há um envolvimento do sistema de disco, você nunca sabe o que acontece quando o servidor está ocupado, o cache está cheio, o disco rígido está parado etc.
A recuperação de nomes de colunas por meio de SELECT * FROM ... LIMIT 1 estava em torno de ~ 0,1ms e também pode usar o cache de consultas.
Então, aqui está meu pequeno código otimizado para obter nomes de colunas de uma tabela, sem usar as colunas show, se possível:
Notas:
fonte
Experimente este, eu pessoalmente o uso:
fonte
NO WORDPRESS:
fonte
Essa pergunta é antiga, mas cheguei aqui procurando uma maneira de encontrar uma determinada consulta com seus nomes de campo de forma dinâmica (não necessariamente apenas os campos de uma tabela). E como as pessoas apontam isso como a resposta para essa tarefa em outras questões relacionadas, estou compartilhando o modo como descobri que isso pode ser feito, usando as dicas de Gavin Simpson:
Isso pode ser facilmente modificado para inserir os nomes dos campos em uma matriz.
Usando um simples:
$sql="SELECT * FROM myTable LIMIT 1"
pode fornecer os campos de qualquer tabela, sem a necessidade de usarSHOW COLUMNS
ou de qualquer módulo php extra, se necessário (removendo a parte do dump de dados).Espero que isso ajude outra pessoa.
fonte
Se você usa php, use esta essência .
ele pode obter informações completas dos campos selecionados sem resultado , e todos os campos personalizados, como:
se acima do sql não retornar dados, também receberá os nomes dos campos aname, bname, outro nome do campo b
apenas duas linhas:
fonte
Esta consulta busca uma lista de todas as colunas em um banco de dados sem precisar especificar um nome de tabela. Retorna uma lista de apenas nomes de colunas:
No entanto, quando executei esta consulta no phpmyadmin, ela exibiu uma série de erros. No entanto, funcionou. Portanto, use-o com cautela.
fonte
A solução mais simples de todas as respostas:
ou
ou
fonte
se você precisar apenas dos nomes e tipos de campos (talvez para facilitar a cópia e colar no Excel):
remover
se você quiser todos os tipos de dados
fonte
Eu não sou especialista, mas isso funciona para mim ..
fonte
Eu tentei esta consulta no SQL Server e funcionou para mim:
fonte