Buscar nome das colunas de uma instrução select postgresql
23/12/2016
0
então preciso de um script que retornar os nome e tipo de dados (se possível) de todas as colunas de uma instrução select do Postgresql utilizando PHP OO e a biblioteca PDO
<?php public function getColumnName(\\PDO $connection, int $id){ $select = "select * from (select * from tableA a inner join tableB b on a.id = b.id where a.id = :id)"; $stmt = $connection->prepare($select); $stmt->bindParam(':id', $id, \\PDO::PARAM_INT); $stmt->execute(); $row = $stmt->fetch(\\PDO::FETCH_ASSOC); foreach (range(0, $stmt->columnCount() - 1) as $key) { columnName[] = $stmt->getColumnMeta($key)['name']; } }
Ismael Sousa
Post mais votado
27/12/2016
https://webcentro.wordpress.com/2010/03/15/sql-para-selecionar-nomes-de-tabelas-e-colunas-no-postgres/
https://desenvolvedorinteroperavel.wordpress.com/2013/02/20/exibindo-informacoes-das-colunas-tabelas-e-banco-de-dados-no-postgresql-mysql-e-sql-server/
Flaviano Martins
Mais Posts
27/12/2016
Ismael Sousa
https://webcentro.wordpress.com/2010/03/15/sql-para-selecionar-nomes-de-tabelas-e-colunas-no-postgres/
https://desenvolvedorinteroperavel.wordpress.com/2013/02/20/exibindo-informacoes-das-colunas-tabelas-e-banco-de-dados-no-postgresql-mysql-e-sql-server/
Nó meu caso, não funciona!
Já havia cogitado usar os esquemas e funções internas do postgres, no entanto elas só funcionam em objetos/tabelas cadastrada no banco de dados e não tem como utiliza-las diretamente em select muito menos em select contendo joins um vens que o resultado do select não é uma tabela cadastrado no banco
De qualquer forma agradeço sr. Flaviano Martins
27/12/2016
Flaviano Martins
27/12/2016
Ismael Sousa
SELECT * FROM (SELECT 1 AS metadata) md LEFT JOIN (SELECT u.idusuario, u.loginbi, u.nome, u.dataultimoacesso FROM public.usuariobi AS u WHERE u.idsituacao IN(0)) AS usuario ON 1 = 1
Dessa forma mesmo que o resultado da consulta mais interna (a do LEFT JOIN) seja NULL a consulta externa (SELECT 1 AS metadata) garante que almenos a primeira coluna conterá valor, fazendo assim com que a consulto geral não retorne vazia.
O problema é que, quando a consulta do LEFT JOIN form muito complexa (com muitos sub selects e joins) ou com muitas colunas, o código Php ou o Banco de dados ou o Driver de conexão (não sei ao certo) entente que a consulta não possui resultado. E acaba dando erro no trecho de código do "foreach" do Php, alertando que não existem colunas
Clique aqui para fazer login e interagir na Comunidade :)