PHP-де SQL сұранысының нәтижесін алу

Алдыңғы сабақта біз сынақ кодын жасадық. Оның маңызды бөлігін еске түсірейін, яғни деректер базасына сұраныс жіберетін бөлігін:

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

Көріп отырғаныңыздай, деректер базасына сұраныс жасалғаннан кейін, $res айнымалысында осы әрекеттің нәтижесі болады. Дегенмен, бұл нәтиже бізге PHP-те қажет түрде емес, деректер базасы бізге жіберген түрде болады.

Нәтижені бізге әдеттегі түрде алу үшін, нәтижеден бір жолды алып беретін mysqli_fetch_assoc функциясын пайдалану қажет.

Келіңіздер, байқап көрейік:

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

Нәтижесінде var_dump бірінші жұмысшымен массив шығарады:

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

Сонымен бірге $res айнымалысынан бірінші жұмысшы жоғалады, және mysqli_fetch_assoc функциясын келесі шақыру келесі жұмысшыны алады.

Және біз жұмысшылар таусылғанша бұл функцияны шақыра аламыз. Жұмысшылар таусылған кезде, функцияны келесі шақыру false мәнін қайтарады.

Келіңіздер, байқап көрейік:

php<?php
  $row1 = mysqli_fetch_assoc($res);
  var_dump($row1); // жұмысшы номер 1
  
  $row2 = mysqli_fetch_assoc($res);
  var_dump($row2); // жұмысшы номер 2
  
  $row3 = mysqli_fetch_assoc($res);
  var_dump($row3); // жұмысшы номер 3
  
  $row4 = mysqli_fetch_assoc($res);
  var_dump($row4); // жұмысшы номер 4
  
  $row5 = mysqli_fetch_assoc($res);
  var_dump($row5); // жұмысшы номер 5
  
  $row6 = mysqli_fetch_assoc($res);
  var_dump($row6); // жұмысшы номер 6
  
  $row7 = mysqli_fetch_assoc($res);
  var_dump($row7); // NULL шығарады - жұмысшылар таусылды
?>