Formas de manipular os dados de uma busca MySQL
MYSQL_FETCH_OBJECT()
Como foi falado antes, esta função retorna um objeto ao invés de uma matriz. Isto indica que você só pode acessar os dados pelo nome do campo, e não pelos seus índices (números como nomes de propriedades são inválidos).
Por causa disso, a função é similar à mysql_fetch_assoc(), ou ainda mysql_fetch_array() com o segundo argumento igual a MYSQL_ASSOC.
Para a seguinte busca:
Se executarmos mysql_fetch_object():
Grandes vantagens em usar este método eu ainda não encontrei. A facilidade em manipular os resultados usando arrays é bem maior. Só quero deixar um exemplo sobre como você pode utilizar os resultados para formar uma matriz mais interessante de se trabalhar.
Se fizermos a seguinte busca:
A vantagem é a seguinte. Após guardar todos os dados na variável $myarr, se eu quero o nome da pessoa com 'id' igual a 3, basta fazer:
Se tivéssemos a váriavel $myarr da página anterior teríamos que passar por todas as linhas de $myarr verificando se o campo 'id' é igual a 3, ou seja:
Muito bem, espero que este artigo tenha ajudado você a pensar melhor as maneiras como você irá manipular os resultados de buscas no MySQL.
Um abraço,
--db
Como foi falado antes, esta função retorna um objeto ao invés de uma matriz. Isto indica que você só pode acessar os dados pelo nome do campo, e não pelos seus índices (números como nomes de propriedades são inválidos).
<?php
echo $obj->campo; // é válido
echo $obj->0; // é inválido
?>
Por causa disso, a função é similar à mysql_fetch_assoc(), ou ainda mysql_fetch_array() com o segundo argumento igual a MYSQL_ASSOC.
Para a seguinte busca:
<?php
$result = mysql_query("SELECT * FROM tabela1 WHERE id=1");
?>
Se executarmos mysql_fetch_object():
<?php
$obj = mysql_fetch_object($result);
// se quisermos o nome da pessoa
echo $obj->nome;
// o e-mail
echo $obj->email;
?>
Grandes vantagens em usar este método eu ainda não encontrei. A facilidade em manipular os resultados usando arrays é bem maior. Só quero deixar um exemplo sobre como você pode utilizar os resultados para formar uma matriz mais interessante de se trabalhar.
Se fizermos a seguinte busca:
<?php
$result = mysql_query("SELECT * FROM tabela1");
$myarr = array(); // vazia
while ($arr = mysql_fetch_array($result,MYSQL_ASSOC)) { // poderia ser mysql_fetch_assoc()
$myarr[$arr['id']] = $arr;
unset($myarr[$arr['id']]['id']); // elimina o campo 'id' da array
}
?>
A vantagem é a seguinte. Após guardar todos os dados na variável $myarr, se eu quero o nome da pessoa com 'id' igual a 3, basta fazer:
<?php
echo $myarr[3]['nome'];
?>
Se tivéssemos a váriavel $myarr da página anterior teríamos que passar por todas as linhas de $myarr verificando se o campo 'id' é igual a 3, ou seja:
<?php
for ($a = 0; $a < count($myarr); $a++){ // usando a variável $myarr da página anterior
if ($myarr[$a]['id'] == 3){
echo $myarr[$a]['nome'];
break;
}
}
?>
Muito bem, espero que este artigo tenha ajudado você a pensar melhor as maneiras como você irá manipular os resultados de buscas no MySQL.
Um abraço,
--db

foi de grande ajuda!!! Valeu!
11/07/2005 12:47pm
(~20 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
(~20 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
(~21 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)