PHPでのSQLクエリ結果の取得
前のレッスンでは、テストコードを作成しました。 データベースへのクエリを実行するその主要部分を 思い出してみましょう:
<?php
$query = 'SELECT * FROM users';
$res = mysqli_query($link, $query) or die(mysqli_error($link));
var_dump($res);
?>
ご覧の通り、データベースへのクエリが実行された後、
変数 $res にはそのアクションの結果が
格納されます。しかし、それはPHPで必要な形式ではなく、
データベースから送信された形式で格納されています。
結果を馴染みのある形式で取得するには、
結果から1行を抽出する関数
mysqli_fetch_assoc を使用する必要があります。
試してみましょう:
<?php
$row = mysqli_fetch_assoc($res);
var_dump($row);
?>
結果として var_dump は最初の従業員の
配列を出力します:
<?php
['id' => 1, 'name' => 'user1', 'age' => 23, 'salary' => 400]
?>
これにより、変数 $res から最初の
従業員が消え、次の mysqli_fetch_assoc の
呼び出しでは既に次の従業員を取得します。
そして、従業員がなくなるまでこの関数を
呼び出すことができます。これが起こると、
次の関数呼び出しは false を返します。
試してみましょう:
<?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 を出力 - 従業員がなくなりました
?>