Obtendo o resultado de uma consulta SQL em PHP

Na lição anterior, criamos um código de teste. Vou relembrar a parte essencial dele, que executa a consulta ao banco de dados:

php<?php
  $query = 'SELECT * FROM users';
  $res = mysqli_query($link, $query) or die(mysqli_error($link));
  var_dump($res);
?>

Como você pode ver, após a consulta ao banco de dados ser realizada, a variável $res conterá o resultado dessa ação. No entanto, ele não está na forma que precisamos em PHP, mas sim na forma em que o banco de dados no-lo enviou.

Para obter o resultado na forma a que estamos habituados, é necessário usar a função mysqli_fetch_assoc, que extrai uma linha do resultado.

Vamos tentar:

php<?php
  $row = mysqli_fetch_assoc($res);
  var_dump($row);
?>

Como resultado, var_dump exibirá um array com o primeiro funcionário:

php<?php
  ['id' => 1, 'name' => 'user1', 'age' => 23, 'salary' => 400]
?>

Com isso, o primeiro funcionário desaparecerá da variável $res, e a próxima chamada de mysqli_fetch_assoc obterá o próximo funcionário.

E assim podemos chamar nossa função até que os funcionários acabem. Assim que isso acontecer, a próxima chamada da função retornará false.

Vamos tentar:

php<?php
  $row1 = mysqli_fetch_assoc($res);
  var_dump($row1); // funcionário número 1
  
  $row2 = mysqli_fetch_assoc($res);
  var_dump($row2); // funcionário número 2
  
  $row3 = mysqli_fetch_assoc($res);
  var_dump($row3); // funcionário número 3
  
  $row4 = mysqli_fetch_assoc($res);
  var_dump($row4); // funcionário número 4
  
  $row5 = mysqli_fetch_assoc($res);
  var_dump($row5); // funcionário número 5
  
  $row6 = mysqli_fetch_assoc($res);
  var_dump($row6); // funcionário número 6
  
  $row7 = mysqli_fetch_assoc($res);
  var_dump($row7); // exibirá NULL - os funcionários acabaram
?>