Ringeril 0 Denunciar post Postado Junho 13, 2009 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
hinom 5 Denunciar post Postado Junho 14, 2009 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
Ringeril 0 Denunciar post Postado Junho 14, 2009 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
hinom 5 Denunciar post Postado Junho 14, 2009 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
Beraldo 864 Denunciar post Postado Junho 14, 2009 Dá para usar: DESC nome_da_tabela; Compartilhar este post Link para o post Compartilhar em outros sites
Ringeril 0 Denunciar post Postado Junho 14, 2009 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
hinom 5 Denunciar post Postado Junho 14, 2009 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
hinom 5 Denunciar post Postado Junho 14, 2009 show tables http://forum.imasters.com.br/public/style_emoticons/default/seta.gif SHOW FULL COLUMNS from TABLE_NAME http://forum.imasters.com.br/public/style_emoticons/default/seta.gif 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 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
Ringeril 0 Denunciar post Postado Junho 14, 2009 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
hinom 5 Denunciar post Postado Junho 14, 2009 basta fazer uma simples consulta. Compartilhar este post Link para o post Compartilhar em outros sites
Ringeril 0 Denunciar post Postado Junho 14, 2009 Mas eu não sei fazer essa consulta, sou iniciante e estou meio confuso ainda. Me poste um exemplo ai, por favor. Obrigado e abraço. Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Junho 15, 2009 exemplo http://www.tizag.com/mysqlTutorial/mysqlselect.php Compartilhar este post Link para o post Compartilhar em outros sites
Ringeril 0 Denunciar post Postado Junho 15, 2009 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
hinom 5 Denunciar post Postado Junho 16, 2009 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
Ringeril 0 Denunciar post Postado Junho 16, 2009 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