Formas de manipular os dados de uma busca MySQL
MYSQL_FETCH_ASSOC()
A única diferença entre essa função e a anterior é que a matriz retornada tem chaves com os nomes das colunas, chamada de matriz associativa. Vejamos:
Se executarmos mysql_fetch_assoc() no lugar de mysql_fetch_row():
Já podemos ver a vantagem de usar esta função. Numa tabela com um número maior de colunas, podemos facilmente obter os dados que queremos chamando o nome da coluna, o que é bem mais intuitivo.
Qual é um problema que pode ocorrer? Vejamos a seguinte busca:
Sabemos que a tabela2 tem uma coluna de mesmo nome que a tabela1 - 'email'. Neste caso, se executamos mysql_fetch_assoc() e escrevemos:
A última coluna terá precedência, ou seja, teremos o seguinte resultado:
ful@prov.com.br
E não:
fulano@prov.com.br
E ainda, não teremos os dois e-mails no resultado, somente um.
Para corrigir esse problema, utilizamos um recurso do MySQL chamado 'alias' (apelidos). Daremos um apelido à coluna 'email' da tabela2.
Montamos a busca da seguinte maneira:
A coluna 'email' da tabela2 agora se chama 'email2'. Se executarmos mysql_fetch_assoc() teremos os seguintes valores na variável $arr:
Próxima função: mysql_fetch_array()
A única diferença entre essa função e a anterior é que a matriz retornada tem chaves com os nomes das colunas, chamada de matriz associativa. Vejamos:
<?php $result = mysql_query("SELECT * FROM tabela1 WHERE id=1"); ?>
Se executarmos mysql_fetch_assoc() no lugar de mysql_fetch_row():
<?php $arr = mysql_fetch_assoc($result); // $arr terá os seguintes valores $arr = array( "id" => 1, "nome" => "Fulano", "email" => "fulano@prov.com.br", "cidade" => "Campinas" ); // se quisermos o nome da pessoa echo $arr["nome"]; ?>
Já podemos ver a vantagem de usar esta função. Numa tabela com um número maior de colunas, podemos facilmente obter os dados que queremos chamando o nome da coluna, o que é bem mais intuitivo.
Qual é um problema que pode ocorrer? Vejamos a seguinte busca:
<?php $result = mysql_query("SELECT * FROM tabela1, tabela2 WHERE tabela1.id=tabela2.id AND id=1"); ?>
Sabemos que a tabela2 tem uma coluna de mesmo nome que a tabela1 - 'email'. Neste caso, se executamos mysql_fetch_assoc() e escrevemos:
<?php echo $arr["email"]; ?>
A última coluna terá precedência, ou seja, teremos o seguinte resultado:
ful@prov.com.br
E não:
fulano@prov.com.br
E ainda, não teremos os dois e-mails no resultado, somente um.
Para corrigir esse problema, utilizamos um recurso do MySQL chamado 'alias' (apelidos). Daremos um apelido à coluna 'email' da tabela2.
Montamos a busca da seguinte maneira:
<?php $result = mysql_query("SELECT tabela1.*, tabela2.email AS email2 FROM tabela1, tabela2 WHERE tabela1.id=tabela2.id AND id=1"); ?>
A coluna 'email' da tabela2 agora se chama 'email2'. Se executarmos mysql_fetch_assoc() teremos os seguintes valores na variável $arr:
<?php $arr = array( "id" => 1, "nome" => "Fulano", "email" => "fulano@prov.com.br", "cidade" => "Campinas", "email2" => "ful@prov.com.br" ); // se quisermos os dois e-mails da pessoa na tela echo $arr["email"] . " ou " . $arr["email2"]; ?>
Próxima função: mysql_fetch_array()
foi de grande ajuda!!! Valeu!
11/07/2005 12:47pm
(~19 anos atrás)
Estou desenvolvendo um sistema para faculdades, e para exibir os nomes dos alunos utilizei os informações do David Bittencourt, foi de grande ajuda!!!
Parabéns!
Parabéns!
19/05/2005 12:58pm
(~19 anos atrás)
David, parabéns pelo artigo.
Gostei da dica de atribuir os resultados da consulta a uma outra array para depois usar assim: $myarr[3]['nome'];
Gostei também do esclarecimento a respeito do uso de mysql_fetcha_array, como o segundo argumento para economizarmos espaço na memória.
Parabéns mesmo.
Gostei da dica de atribuir os resultados da consulta a uma outra array para depois usar assim: $myarr[3]['nome'];
Gostei também do esclarecimento a respeito do uso de mysql_fetcha_array, como o segundo argumento para economizarmos espaço na memória.
Parabéns mesmo.
24/07/2004 9:45am
(~20 anos atrás)
Perdão, as imagens não apareceram por causa de um bug no codigo do site que eu consertei semana passada.
O David enviou para mim as imagens novamente para eu consertar o artigo, mas só agora tive tempo para isso.
--Joao
O David enviou para mim as imagens novamente para eu consertar o artigo, mas só agora tive tempo para isso.
--Joao
14/12/2003 4:12pm
(~21 anos atrás)
Obrigado Bucaneiro... =)
É, com as imagens seria bem melhor... =(
--db
É, com as imagens seria bem melhor... =(
--db
10/12/2003 2:11pm
(~21 anos atrás)
cara formidavel, com exemplos práticos, abordagem simples e de uso comum.
Poxa galera consertem as imagens, este é um artigo de grande valor pros iniciantes.
Poxa galera consertem as imagens, este é um artigo de grande valor pros iniciantes.
10/12/2003 12:06pm
(~21 anos atrás)
Prefiro a função mysql_fetch_row(), pois é a mais rápida de todas.
Em relação ao artigo, muito bom MESMO, principalmente referente à dica do 'alias'.
Parabéns!
Em relação ao artigo, muito bom MESMO, principalmente referente à dica do 'alias'.
Parabéns!
09/12/2003 2:12pm
(~21 anos atrás)
No início eu também usava mysql_fetch_object() pois era como eu tinha aprendido.
Quando meus scripts começaram a ficar mais complicados eu vi a vantagem em usar mysql_fetch_array() como expliquei na última página do artigo.
Hoje, como minhas buscas no MySQL exigem diversas tabelas e grande número de campos, usar mysql_fetch_assoc() é a melhor opção pra mim.
Cada um precisa analisar a sua necessidade =)
--db
Quando meus scripts começaram a ficar mais complicados eu vi a vantagem em usar mysql_fetch_array() como expliquei na última página do artigo.
Hoje, como minhas buscas no MySQL exigem diversas tabelas e grande número de campos, usar mysql_fetch_assoc() é a melhor opção pra mim.
Cada um precisa analisar a sua necessidade =)
--db
08/12/2003 7:57pm
(~21 anos atrás)