行数の取得
■概要
mysqli_num_rows関数を使用すると、結果セットの行数を取得することができます。
■サンプルプログラム
この状態で以下のサンプルプログラムを実行してみます。
num_rows.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?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関数と同じですね。
1 | SELECT COUNT (*) FROM members; |
このように行数(レコード数)を取得することができます。
■応用
この行数を使用して、前回のサンプル(select2.php)をブラッシュアップしてみましょう!
select3.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | <?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テーブルを空にして、もう一度プログラムを実行してみます。
※以下のコマンドでデータを消すと元に戻せないので気を付けましょう
1 | TRUNCATE TABLE members; |
データがありませんと表示されました。
select2.phpの場合だと項目名だけが表示されてしまいます。
もしデータが空だった場合、どちらの表示がユーザーにとってわかりやすいでしょうか?
後者の場合は、「何かしらのバグで表示が消えてしまっているのでは?」とも捉えられます。
そう考えると、データがありませんと表示してあげる方がわかりやすいですね。
このように行数を利用すると、ユーザーに親切なシステムにすることができます。