Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ringeril

[Resolvido] Listar as tabelas do MySQL e detalhes de cada tabela

Recommended Posts

Bom dia,

 

Estou tentanto pegar o nome, o tipo e o tamanho dos campos de uma tabela(Mysql).

Já consegui pegar o nome e tamanho, mas o tipo sempre vem: INT, STRING ou BLOB.

Existe alguma função que faça a conversão deles para VARCHAR, TEXT, ENUM e etc.?

 

Obrigado e abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual versao do php e mysql ?

 

de antemão,

 

Para obter os nomes das tabelas

SHOW TABLES

 

 

Para obter detalhes sobre cada tabela

SHOW FULL COLUMNS from TABLE_NAME

exemplo

SHOW FULL COLUMNS from usuarios

Compartilhar este post


Link para o post
Compartilhar em outros sites

hinom,

Uso isso aqui para pegar os dados do campo, quem vem de um while:

$nomef = mysql_field_name($result, $i);
$tipof = mysql_field_type($result, $i);
$tamaf = mysql_field_len($result, $i);

O mysql_field_type(); retorna somente INT, STRING ou BLOB.

Quero sabe como faço para ele retornar esses tipos VARCHAR, TEXT, ENUM e etc..

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

os tipos serão sempre string obviamente, pois você deve obter o valor que está dentro do campo retornado e não o tipo do campo.

 

entendeu ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estava olhando o script do phpmyadmin e vi que eles usam isso aqui para transformar nos tipos corretos:

$type			 = $row['Type'];
	$extracted_fieldspec = PMA_extractFieldSpec($row['Type']);

	if ('set' == $extracted_fieldspec['type'] || 'enum' == $extracted_fieldspec['type']) { 
		$type		 = $extracted_fieldspec['type'] . '(' . $extracted_fieldspec['spec_in_brackets'] . ')'; 

		// for the case ENUM('–','“')
		$type		 = htmlspecialchars($type);

		$type_nowrap  = '';

		$binary	   = 0;
		$unsigned	 = 0;
		$zerofill	 = 0;
	} else {
		$type_nowrap  = ' nowrap="nowrap"';
		// strip the "BINARY" attribute, except if we find "BINARY(" because
		// this would be a BINARY or VARBINARY field type
		if (!preg_match('@BINARY[\(]@i', $type)) {
			$type		 = preg_replace('@BINARY@i', '', $type);
		}
		$type		 = preg_replace('@ZEROFILL@i', '', $type);
		$type		 = preg_replace('@UNSIGNED@i', '', $type);
		if (empty($type)) {
			$type	 = ' ';
		}

		if (!preg_match('@BINARY[\(]@i', $row['Type'])) {
			$binary		   = stristr($row['Type'], 'blob') || stristr($row['Type'], 'binary');
		} else {
			$binary		   = false;
		}

		$unsigned	 = stristr($row['Type'], 'unsigned');
		$zerofill	 = stristr($row['Type'], 'zerofill');
	}

	unset($field_charset);
	if ((substr($type, 0, 4) == 'char'
		|| substr($type, 0, 7) == 'varchar'
		|| substr($type, 0, 4) == 'text'
		|| substr($type, 0, 8) == 'tinytext'
		|| substr($type, 0, 10) == 'mediumtext'
		|| substr($type, 0, 8) == 'longtext'
		|| substr($type, 0, 3) == 'set'
		|| substr($type, 0, 4) == 'enum'
		) && !$binary) {
		if (strpos($type, ' character set ')) {
			$type = substr($type, 0, strpos($type, ' character set '));
		}
		if (!empty($row['Collation'])) {
			$field_charset = $row['Collation'];
		} else {
			$field_charset = '';
		}
	} else {
		$field_charset = '';
	}

Será que isso que faz virar char, varchar, text, enum, etc.?

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você ainda nao compreendeu..

 

vou mostrar exemplos usando um front-end chamado "MySQL-Front" versão 2.5

Compartilhar este post


Link para o post
Compartilhar em outros sites

show tables
http://forum.imasters.com.br/public/style_emoticons/default/seta.gif

Imagem Postada

 

 

 

 

SHOW FULL COLUMNS from TABLE_NAME
http://forum.imasters.com.br/public/style_emoticons/default/seta.gif

Imagem Postada

O campo "Type" retorna "Blob" para todos devido a denifição do campo para o retorno da consulta.

O que deve-se obter é o valor dentro do campo.

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif

Imagem Postada

 

 

 

outro tópico relacionado http://forum.imasters.com.br/public/style_emoticons/default/seta.gif http://forum.imasters.com.br/index.php?showtopic=348267

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que entendi, o tipo do campo é BLOB, mas o que está dentro do campo é valor INT, é isso?

Agora como faço para obter esse valor (de INT) no PHP?

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não consegui, com esse exemplo de consulta ele faz uma consulta normal, não mostra se é INT ou VARCHAR ou ENUM ou TEXT, etc.

Alguem ajuda?

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não consegui, com esse exemplo de consulta ele faz uma consulta normal, não mostra se é INT ou VARCHAR ou ENUM ou TEXT, etc.

o que mostra exatamente ?

 

o que você fez até o momento ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora consegui, antes não mostrava nada o script estava errado.

Usei o seu exemplo:

// Get all the data from the "example" table
$result = mysql_query("SHOW FULL COLUMNS from usuarios") 
or die(mysql_error());  

echo "<table border='1'>";
echo "<tr> <th>Name</th> <th>Age</th> </tr>";
// keeps getting the next row until there are no more to get
while($row = mysql_fetch_array( $result )) {
	// Print out the contents of each row into a table
	echo "<tr><td>"; 
	echo $row[1];
	echo "</td></tr>"; 
} 

echo "</table>";

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.