Result of mysqli_fetch array different than the one executed in phpmyadmin

1

I have the following php code that does a query to the database and returns a vector with the data.

 public function executeSelect($query){

            $resultado_id = mysqli_query($this->objetoConexao, $query);

            if($resultado_id){

                //Passa para um vetor o resultado da query
                $dados_usuario = mysqli_fetch_array($resultado_id, MYSQLI_ASSOC);

                return $dados_usuario;
            }
            else{
                return null;
            }

        }

$query = "SELECT *
              FROM prova_dados INNER JOIN prova_fotos ON (prova_fotos.id_dados_prova = prova_dados.id)
                GROUP BY prova_fotos.id_dados_prova ";

    $select = $dao->executeSelect($query);

    echo var_dump($select['materia']);

But when I run this query in phpmyadmin in the "hand" it returns me two rows, with the data grouped as I want, but in the return of mysqli_fetch_array it shows me only one line.

result of same query in phpmyadmin

echophpvar_dump

    
asked by anonymous 07.11.2017 / 20:44

2 answers

0

Notice that you identify as $dados_usuario = mysqli_fetch_array($resultado_id, MYSQLI_ASSOC); by conflicting mysqli_fetch_array with the indicated parameter, which is MYSQL_ASSOC .

The correct would be this way below

mysqli_fetch_assoc($resultado_id, MYSQLI_ASSOC);

And you also do not define a variable to go through the data / records in array, notice the response

 public function executeSelect($query, $objetoConexao){

        $query = "SELECT * FROM prova_dados INNER JOIN prova_fotos ON (prova_dados.id = prova_fotos.id_dados_prova)
            GROUP BY prova_fotos.id_dados_prova ";

        $resultado_id = mysqli_query($this->objetoConexao, $query);

        $valores = array(); /* Você não tinha criado uma variável para definir array */

        if($resultado_id){

            //Passa para um vetor o resultado da query
            $row = mysqli_fetch_assoc($resultado_id, MYSQLI_ASSOC);

            $valores['Aqui coloque o name do input'] = $row['Aqui coloque o nome da tabela que deseja percorrer'];

        } else {

        return json_encode(array( 'error' => mysqli_error($objetoConexao) ));        
    }

        return json_encode($valores);

}

Or if it's not what you want, try it this way, with While traversing the fields and returning, but here they will be returned in the table format because I delimited that they will be brought inside a tag <td>

$query = "SELECT * FROM prova_dados INNER JOIN prova_fotos ON (prova_dados.id = prova_fotos.id_dados_prova) GROUP BY prova_fotos.id_dados_prova";

$resultado_id = mysqli_query($this->objetoConexao, $query);       

$row = array(); /* Você não tinha criado uma variável para definir array */

while ($row = mysqli_fetch_assoc($resultado_id)){

   echo "<tr>";
      echo "<td>". $row['Nome da tabela que quer percorrer'] ."</td>";
      echo "<td>". $row['Nome da tabela que quer percorrer'] ."</td>";
   echo "</tr>";

}
    
08.11.2017 / 12:42
0

What was missing in your case was a while.

Modify your function to look like this:

public function executeSelect($query){

        $resultado_id = mysqli_query($this->objetoConexao, $query);

        if($resultado_id){

            //Passa para um vetor o resultado da query
            while ($dados = mysqli_fetch_array($resultado_id, MYSQLI_ASSOC)) {
  $response[] = $dados;

}

            return $response;
        }
        else{
            return null;
        }

    }
    
05.05.2018 / 02:20