Uma das grandes vantagens do PHP sobre as linguagens concorrentes é sua “perfeita” integração com o banco de dados, hoje falaremos um pouco sobre esta integração e o básico de cada função!

Buscando os dados do MySQL (mysql_query)

Para buscar os dados do banco de dados com o php utilizaremos a função mysql_query, esta função é responsável tratar o retorno de uma query, retornando assim o conjunto de dados necessários para exibirmos os dados.

        <?php
        //Comando para conectar ao banco de dados
        mysql_connect("localhost", "root", "");

        //Comando para selecionar o database que será utilizado
        mysql_select_db("ogenial");

        //Comando que será executado
        $sql = "SELECT coluna1, coluna2, coluna3 FROM tabela";

        //Comando que executa a query no banco de dados
        //Observe que o retorno desta função deve
        //ser armazenado em uma variável, esta variável irá
        //conter todo o resultado da pesquisa acima.
        $qr = mysql_query($sql);
        ?>

Observe que o código acima não exibe os dados, apenas executa a consulta e armazena o resultado em uma variável, abaixo iremos ver como exibir os dados armazenados em uma variável.

Exibir informações do Mysql no PHP

Bom, agora temos as informações armazenadas em uma variável e precisamos exibir, para conseguirmos isso devemos utilizar uma das funções que convertem os dados retornados do banco de dados em um formato que seja fácil de tratar, o PHP nos permite converter isso em Array ou Objeto utilizando as funções mysql_fetch_array, mysql_fetch_object e mysql_fetch_row, entenda mais abaixo o funcionamento de cada uma destas funções.

Como exibir informações utilizando mysql_fetch_array?

A função mysql_fetch_array irá converter nosso resultado em um array, permitindo assim exibir os dados, que são trazidos do banco de dados, porém a função nos retorna linha a linha os dados que serão exibidos, veja o exemplo:

        <?php
        mysql_connect("localhost", "root", "");
        mysql_select_db("ogenial");
        $sql = "SELECT coluna1, coluna2, coluna3 FROM tabela";
        $qr = mysql_query($sql);

        //Cria um vetor unidimensional com os dados da primeira
        //linha retornada na nossa consulta
        $row = mysql_fetch_array($qr);

        //Exibe os dados da primeira linha separados por -
        echo $row['coluna1']." - ".$row['coluna2']." - ".$row['coluna3'];

        //Atualiza a variável criada acima, porém agora contendo
        //os dados da segunda linha retornada pela consulta
        $row = mysql_fetch_array($qr);

        //Exibe os dados da segunda linha separados por -
        echo $row['coluna1']." - ".$row['coluna2']." - ".$row['coluna3'];
        ?>

Como podemos ver é bem simples exibir os dados desta forma, porém, se quisermos listar todos os dados retornados em uma tabela deveremos utilizar o while, podemos fazer isso pois sabemos que a função mysql_fetch_array retornará um false caso não exista mais linhas a serem exibidas. Veja o exemplo:

        <?php
        mysql_connect("localhost", "root", "");
        mysql_select_db("ogenial");
        $sql = "SELECT coluna1, coluna2, coluna3 FROM tabela";
        $qr = mysql_query($sql);

        /*
         * Aqui iremos passar para row a linha atual a ser exibida,
         * porém, quando o mysql_fetch_array retornar false
         * o while será encerrado.
         */
        while($row = mysql_fetch_array($qr)) {
            //Exibe os dados da linha atual separados por -
            echo $row['coluna1']." - ".$row['coluna2']." - ".$row['coluna3'];
        }
        ?>

Como exibir informações utilizando mysql_fetch_row?

O mysql_fetch_row é muito parecido com o mysql_fetch_array, porém o array que ele retorna é com um índice numérico. não sendo possível assim utilizar o nome da coluna exibir a informação.

        <?php
        mysql_connect("localhost", "root", "");
        mysql_select_db("ogenial");
        $sql = "SELECT coluna1, coluna2, coluna3 FROM tabela";
        $qr = mysql_query($sql);

        while($row = mysql_fetch_row($qr)) {
            //Exibe os dados da linha atual separados por -, utilizando
            //o índice numérico da coluna
            echo $row[0]." - ".$row[1]." - ".$row[2];
        }
        ?>

Observe que no exemplo acima acessamos as colunas geradas utilizando um índice numérico, sendo que o PHP gerou a relação entre as colunas automáticamente relacionado 0 a primeira coluna, 1 a segunda coluna (ele respeirá a ordem definida na consulta executada com o mysql_query) e etc…

Como exibir informações utilizado o mysql_fetch_object?

O mysql_fetch_object, diferente das outras funções retornará não um vetor, mas sim um objeto que terá os parâmetros com os nomes das colunas com acesso “public”, esta função nos permite organizar melhor as informações quando estamos programando um sistema todo OO.

        <?php
        mysql_connect("localhost", "root", "");
        mysql_select_db("ogenial");
        $sql = "SELECT coluna1, coluna2, coluna3 FROM tabela";
        $qr = mysql_query($sql);

        while($row = mysql_fetch_object($qr)) {
            //Exibe os dados da linha atual separados por -, utilizando
            //o objeto para acessar os dados
            echo $row->coluna1." - ".$row->coluna2." - ".$row->coluna3;
        }
        ?>

10 Comments

  1. Posted 12 de junho de 2011 at 17:00 | Permalink

    olá meu nome é Bruno se possível me explique via e-mail isto:

    eu quero inserir no db $html mas não o valor eu kero armazenar em forma de texto para depois quando eu listar ela tenha um valor de váriavel

    entendeu?
    ex.: tenho um código html com váriaveis dentro de echo” “; mas kero armazenar todo este código fonte no db junto com as váriaveis e depois quando listo elas se tornam texto não variaveis vc pode me ajudar?

    • Posted 12 de junho de 2011 at 23:44 | Permalink

      Amigo, existe uma biblioteca chamada Smarty, é um template engine muito poderoso e se estudar ele um pouco, você conseguirá fazer o que deseja

  2. Marcos
    Posted 20 de dezembro de 2011 at 10:21 | Permalink

    Cara bom dia meu nome é marcos, estou tentando instalar o muysql e não consegui, tive ajuda de um colega para resolver meu problema com relação a conexão de um formulário com o banco de dados, o problema é que agora eu tento instalar o mysql e não consigo instala-lo, você poderia me ajudar e se possivel me informar como eu faço para receber esses dados no banco de dados.

  3. Andrea
    Posted 12 de março de 2012 at 14:40 | Permalink

    Olá,
    Trabalho com PHP e MySQL. Gostaria de saber se é possível montar um único SELECT para pegar informações de dois bancos de dados diferentes? Já vi SELECT utilizando JOIN com ‘banco.tabela.campo’ mas testei e não deu certo e imagino que seja porque o nome do banco e senha são diferentes e no mysql_query, é possível colocar somente uma string de conexão de banco. Sabe se é possível eu fazer isto e se sim, poderia me mostrar como? Grata,
    Andrea

    • Posted 14 de março de 2012 at 20:45 | Permalink

      Olá andrea,

      Funciona sim, testei no MYSQL 5.5.2, criei dois databases (test e test2) e em cada um uma tabela com 1 campo, (teste.a, teste2.b) e fiz a seguinte consulta:

      SELECT * FROM test.teste INNER JOIN test2.teste2

      Funcionou perfeitamente, tente verificar o seguinte:

      * O usuário tem acesso as duas databases
      * Esta utilizando uma versão atual do MySQL
      * Verificar se esta digitando corretamente as databases e tabelas

      Espero ter ajudado

  4. Eder da Costa dias
    Posted 29 de maio de 2012 at 10:09 | Permalink

    cara eu gostaria de saber se tem como fazer esta consulta e exibir os tudo numa variável se tiver como me manda um código de exemplo via e-mail ta pode ser se puder ta

  5. Alex Mazetti
    Posted 3 de setembro de 2012 at 17:29 | Permalink

    Eu ja tenho uma lista do campo criado, mas como eu faço para que ele exiba apenas o ultimo registro?

  6. Elder
    Posted 9 de outubro de 2012 at 19:07 | Permalink

    Ola bom gostei da explicação muito boa mas estou com um problema aqui do qual não sei se é possivel fazer

    to querendo fazer uma pesquisa no banco vendo a data.
    ex: hoje é dia 09/10/12
    gostaria que essa pesquisa retornasse pra mim todos os registros com essa data sempre sendo a data de do dia atual

    obrigado pelo post.

  7. Posted 1 de janeiro de 2013 at 19:11 | Permalink

    Olá cara boa tarde… estou desenvolvendo um web site para postagem de anuncios… os usuarios poderão postar anuncios diarios quantos quiser com limite de até 10 anuncios por vez…
    ja conseguir programar toda essa parte…
    oque me falta é:
    quando o usuario clica em enviar anuncio o site mostra pra ele, um link correspondente ao anuncio que ele enviou… esse link está pegando o ID do anuncio, então o cada anuncio terá um link diferente.

    o usuario podera copiar esse link pra postar em um outro site ou q seja.
    mas preciso desenvolver a função seguinte:
    se o usuario clicar no link abrirá uma nova pagina exibindo os dados do anuncio que o devido usuario postou, quero dizer… na pagina inicial será exibido os anuncios e abaixo deles o link se um usuario qualquer clicar no link abre uma nova aba exibindo o anuncio correspondente ao link q ele clicou… poderia me ajudar por favor?? ficaria muito grato.

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>