1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Obter comment do field de 1 tabela MySql

Discussão em 'Web Development' iniciada por silvino, 10 de Setembro de 2007. (Respostas: 12; Visualizações: 1841)

  1. silvino

    silvino Power Member

    Olá,

    Directo ao assunto, quando crio um campo numa tabela mysql posso atribuir um comentário, por exemplo vou alterar a tabela maquina, vou adicionar mais um campo com o nome "exemplo" e o comentário é "É um exemplo";

    ALTER TABLE `maquina` ADD `exemplo` INT NOT NULL COMMENT 'É um Exemplo';

    Agora como acedo ao comment do campo ?

    Obrigado :)
     
  2. AliFromCairo

    AliFromCairo Power Member

    Boas, tens várias maneiras de fazer isso:

    Código:
    SHOW FULL COLUMNS FROM tabela;
    
    ou

    Código:
    SELECT COLUMN_COMMENT
    FROM information_schema.COLUMNS
    WHERE table_schema='schema' AND table_name='tabela' AND column_name='exemplo';
    
    A primeira vai-te devolver toda a informação relativa a todas as colunas da tabela, e exige um trabalho extra para chegares à coluna em questão (os comentários de cada coluna encontram-se na coluna "Column" :-D).

    A outra query penso que depende um pouco da versão do MySQL que estás a usar, mas devolve o campo que precisas sem necessitar de pós-processamento.

    Espero que ajude.
     
  3. silvino

    silvino Power Member

    Olá, obrigado pela ajuda, assim já sei o que procurar no google ;)

    Mas continuo sem resultados, acho que não tenho erros ora ve como estou a tentar fazer,
    as variáveis $tabela e $campo tem o nome correcto atribuido anteriormente,,,


    $str = "SELECT column_comment FROM information_schema.columns WHERE table_name = '$tabela' AND column_name LIKE '$campo'";

    $q = mysql_query($str,'nomeBD') or die(mysql_error());
    $comentario = mysql_fetch_row($q);

    if($comentario){
    echo "<h2>".$comentario[0]."</h2>";
    }else{
    echo "<h2>Nada para mostrar</h2>";
    }

    mysql_free_result($q);

    Tb descobri isto
    http://www.sitepoint.com/forums/showthread.php?p=3517621
    mas não resolve o problema,,,
     
    Última edição: 10 de Setembro de 2007
  4. AliFromCairo

    AliFromCairo Power Member

    Boas, esse 'nomeBD' deveria ser o recurso associado à tua ligação, ou seja, a variável onde ficou guardado o resultado da função mysql_connect (isso até deveria dar problemas, pois estás a passar uma string como argumento). Caso queiras seleccionar a BD, usa a função mysql_select_db, algo do género:

    PHP:
    $connection mysql_connect('localhost''username''password') or die(mysql_error());
    mysql_select_db('nomeBD'$connection) or die (mysql_error());
    // ...
    $q mysql_query($str);
    // ...
    De qualquer maneira, o segundo argumento da função mysql_query é redundante caso estejas a utilizar apenas uma base de dados (como podes ver no exemplo). Espero que ajude.
     
  5. silvino

    silvino Power Member

    Olá, sim ajudou,,, Mas continuo as aranhas, Agora devolve este erro

    Access denied for user 'silvino'@'%' to database 'information_schema'

    O que é isto ? Será da ligação ?
     
  6. AliFromCairo

    AliFromCairo Power Member

    Boas, coloca aqui o código que estás a usar desde o momento em que fazes o mysql_connect (removendo os teus dados de acesso) e a query. Já agora, é um alojamento free ou privado ?
     
  7. silvino

    silvino Power Member

    é um alojamento privado, uando a pagina é carregada ele verfica sempre
    PHP:
     if(!isset($link)){liga();}
    depois chamo a função campos,,,

    PHP:
    function liga(){
    global 
    $link;
    $link mysql_connect('url''silvino''pass');
    if (!
    $link) {
        die(
    'Erro ao conectar: ' mysql_error());
    }
    mysql_select_db('basededados');
    }

    function 
    campos(){
    global 
    $link;

    $tabela="maquina";
    $campo="nome";

    $str "SELECT column_comment FROM information_schema.columns WHERE table_name = '$tabela' AND column_name LIKE '$campo'";

    echo 
    "<h2>".$str."</h2>";

    $q mysql_query($str) or die(mysql_error());
    $comentario mysql_fetch_row($q);

    if(
    $comentario){
        echo 
    "<h2>".$comentario[0]."</h2>";
    }else{
        echo 
    "<h2>Nada para mostrar</h2>";
    }

    mysql_free_result($q);
    }
     
  8. AliFromCairo

    AliFromCairo Power Member

    Boas, o código parece-me estar ok. O problema está nas permissões. Tenta fazer o login como root, e dar permissões ao user silvino. Algo do género:

    Código:
    GRANT SELECT ON information_schema.* TO 'silvino'@'%';
    
     
  9. silvino

    silvino Power Member

    so tenho um login possivel ... quando acedo ao phpmyadmin com a mesma conta ele permite listar os comentarios dos campos quando visualizo a tabela ... devo entrar em contacto com o administrador e perguntar os dados de acesso para root ?
     
  10. AliFromCairo

    AliFromCairo Power Member

    Hmm, que versão do MySQL é que estás a usar ? Testei o teu código aqui e funcionou. Aqui está o resultado das permissões que o user que usei tem:

    Código:
    mysql> SHOW GRANTS;
    GRANT USAGE ON *.* TO [EMAIL="'user'@'localhost'"]'user'@'localhost'[/EMAIL] IDENTIFIED BY PASSWORD 'password'
    GRANT ALL PRIVILEGES ON `bd`.* TO [EMAIL="'user'@'localhost'"]'user'@'localhost'[/EMAIL]
    
     
  11. silvino

    silvino Power Member

    humm,,, devo confessar que não tenho muita experiencia com mysql, apenas criei um utilizador apartir de um painel de controlo para aceder a base de dados. Não perguntava nada sobre previlegios, a versão do mysql é 4
     
  12. silvino

    silvino Power Member

    Ey Já resolvi,,, Comecei a experimentar varias formas e consegui um output dos comentarios,,,, é o segundo ciclo for que gera ;)

    PHP:
    if(!isset($tabela)){
        echo 
    "<h2>Falta de informação para efectuar busca</h2>";
    }else{
        
    $colunas="SHOW FULL COLUMNS FROM ".$tabela;

        if(!isset(
    $campo) or !isset($valor)) {
            
    $str="SELECT * FROM ".$tabela;
        }else{
            
    $str="SELECT * FROM ".$tabela." WHERE ".$campo." like '".$valor."%'";
        }

    $c=mysql_query($colunas);
    $q=mysql_query($str);

    $ncol=mysql_num_fields($q)-1;
    $nlin=mysql_num_rows($q);

    $matris=array(array());
    $identi=array();

    //index 0 toma valor do comentario campos 
    for($y=0;$y<=$ncol$y++){
        
    $resc=mysql_fetch_assoc($c);
        
    $identi[$y]=mysql_field_name($q$y);
        
    $matris[0][$y]=$resc['Comment'];
    }

    mysql_free_result($resc);

    //prienche a matris com os valores
    for($x=1$x<=$nlin$x++){
    $resc=mysql_fetch_row($q);
        for (
    $y=0$y<=$ncol$y++){
            
    $matris[$x][$y]=$resc[$y];
        }
    }
    Obrigado pela ajuda preciosa
     
    Última edição: 13 de Setembro de 2007
  13. AliFromCairo

    AliFromCairo Power Member

    Pois, entre a versão 4 e a 5 há bastantes diferenças, e deve ser essa a razão pela qual te aparece aquele erro das permissões (eu testei no mysql 5 e funcionou). Tenta contactar o administrador para fazer o update.

    De qualquer maneira, já conseguiste resolver o problema usando a outra query, mas é relativamente mais trabalhoso do que fazendo da outra forma.
     

Partilhar esta Página