2021.02.28
【PHP基礎】mysqli関数⑧ 行数の取得
行数の取得
■概要
mysqli_num_rows関数を使用すると、結果セットの行数を取得することができます。
■サンプルプログラム
この状態で以下のサンプルプログラムを実行してみます。
num_rows.php
<?php // 接続処理 $con = mysqli_connect('localhost', 'root', '', 'sample_db'); if(!$con) { die('接続に失敗しました'); } // 文字コード mysqli_set_charset($con, 'utf8'); // SQLの発行と出力 $sql = "SELECT * FROM members"; $res = mysqli_query($con, $sql); $num_rows = mysqli_num_rows($res); echo $num_rows; // 接続断 mysqli_close($con); ?>
結果
レコード数が表示されました。
SQLのCOUNT関数と同じですね。
SELECT COUNT(*) FROM members;
このように行数(レコード数)を取得することができます。
■応用
この行数を使用して、前回のサンプル(select2.php)をブラッシュアップしてみましょう!
select3.php
<?php // 接続処理 $con = mysqli_connect('localhost', 'root', '', 'sample_db'); if(!$con) { die('接続に失敗しました'); } // 文字コード mysqli_set_charset($con, 'utf8'); // SQLの発行と出力 $sql = "SELECT * FROM members"; $res = mysqli_query($con, $sql); $num_rows = mysqli_num_rows($res); if($num_rows == 0) { echo "<div>データがありません</div>"; } else { echo "<table border='1'>"; echo " <tr>"; echo " <th>ID</th>"; echo " <th>名前</th>"; echo " <th>年齢</th>"; echo " <th>住所</th>"; echo " </tr>"; while($row = mysqli_fetch_assoc($res)) { echo "<tr>"; echo " <td>{$row['id']}</td>"; echo " <td>{$row['name']}</td>"; echo " <td>{$row['age']}</td>"; echo " <td>{$row['address']}</td>"; echo "</tr>"; } echo "</table>"; } // 接続断 mysqli_close($con); ?>
結果
前回と変わってないですね。
しかし、実はmembersテーブルにデータが無かった場合(レコード数が0)だった場合の処理が違います。
一度membersテーブルを空にして、もう一度プログラムを実行してみます。
※以下のコマンドでデータを消すと元に戻せないので気を付けましょう
TRUNCATE TABLE members;
データがありませんと表示されました。
select2.phpの場合だと項目名だけが表示されてしまいます。
もしデータが空だった場合、どちらの表示がユーザーにとってわかりやすいでしょうか?
後者の場合は、「何かしらのバグで表示が消えてしまっているのでは?」とも捉えられます。
そう考えると、データがありませんと表示してあげる方がわかりやすいですね。
このように行数を利用すると、ユーザーに親切なシステムにすることができます。