How to turn a query into a json?

Asked

Viewed 1,650 times

6

I’m trying to transform the data returned from a database query into Json format, so far it’s almost right, but I think the format is being created incorrectly!

Json is being generated as follows!

[{"codigo":"1","nome":"Lucas Marioano Pereira","nascimento":"05\/12\/2001","perfil":"Administrador","estado":"Bahia","cidade":"Afonso Cl?udio"}]
[{"codigo":"3","nome":"Renata Souza De Jesus","nascimento":"08\/06\/2001","perfil":"Administrador","estado":"Bahia","cidade":"Apiac"}]

I’m doing like this:

$chamaDados = mysql_query("SELECT * FROM usuario")
    or die("Erro na pesquisa" . mysql_error());

while ( $linha = mysql_fetch_array( $chamaDados ) ) {  
              $codigo     = $linha['codigo'];
              $nome       = $linha['nome'];
              $nascimento = $linha['nascimento'];
              $perfil     = $linha['perfil'];
              $estado     = $linha['estado'];
              $cidade     = $linha['cidade'];        

  $pessoa =  array(
       array(
          'codigo'     => $codigo,
          'nome'       => $nome,
          'nascimento' => $nascimento,
          'perfil'     => $perfil,
          'estado'     => $estado,
          'cidade'     => $cidade
        )
     );    
   echo $o_json = json_encode( $pessoa ); 
}

3 answers

5

Instead of always creating a new append array, within the cycle as follows

  $pessoa[] =
       array(
          'codigo'     => $codigo,
          'nome'       => $nome,
          'nascimento' => $nascimento,
          'perfil'     => $perfil,
          'estado'     => $estado,
          'cidade'     => $cidade
        );

declaring before, the variable $person as an array.

$pessoa = array();

2

Simplify your code by removing variables $codigo $nome... and just pass $linha and convert the array to json only after while:

$arr = array();
while ($linha = mysql_fetch_array( $chamaDados ) ) {
    $arr[] = $linha;
}
echo $o_json = json_encode($arr);

2

I would suggest doing as @Jose said, but adding the id as the array index. (assuming here that code is the id)

$pessoa = array();

while ( $linha = mysql_fetch_array( $chamaDados ) ) {
    $pessoa[ $linha['codigo'] ] = array(
          'codigo'     => $linha['codigo'];
          'nome'       => $linha['nome'];
          'nascimento' => $linha['nascimento'];
          'perfil'     => $linha['perfil'];
          'estado'     => $linha['estado'];
          'cidade'     => $linha['cidade']; 
    );  
}

echo $o_json = json_encode( $pessoa ); 

so when you need to search for something in json you can easily identify the item using index as id.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.