MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

PHPスクリプトでMySQLテーブルの全レコードを表示する方法

PHPスクリプトでMySQLテーブルの全レコードを表示する方法

本記事では、PHPを使ってMySQLテーブル内のすべてのレコードを取得し、画面に表示する方法を解説します。サンプルとして、「tutorials_tbl」という名前のテーブルから全レコードを取り出す処理を見ていきましょう。

従来のPHPでは、SQL文の実行にmysql_query()関数を、実行結果から1行ずつデータを取り出すのにmysql_fetch_array()関数を使用するのが一般的でした。まずはその基本的なコード例から確認します。

<?php
    $dbhost = 'localhost:3036';
    $dbuser = 'root';
    $dbpass = 'rootpassword';
    $conn = mysql_connect($dbhost, $dbuser, $dbpass);

    if(! $conn ) {
        die('Could not connect: ' . mysql_error());
    }
    $sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date
        FROM tutorials_tbl';

    mysql_select_db('TUTORIALS');
    $retval = mysql_query( $sql, $conn );

    if(! $retval ) {
        die('Could not get data: ' . mysql_error());
    }

    while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
        echo "Tutorial ID :{$row['tutorial_id']} <br> ".
            "Title: {$row['tutorial_title']} <br> ".
            "Author: {$row['tutorial_author']} <br> ".
            "Submission Date : {$row['submission_date']} <br> ".
            "--------------------------------<br>";
    }
    echo "Fetched data successfully\n";
    mysql_close($conn);
?>

MYSQL_ASSOC定数の役割

上記の例では、mysql_fetch_array()関数の第2引数として定数MYSQL_ASSOCを指定しています。これにより、取得した各行が連想配列として返されるため、インデックス番号ではなくフィールド名(カラム名)をキーとして各値へアクセスできます。カラムの並び順に依存せずコードの可読性も向上するため、実務では連想配列形式の取得が広く使われています。

注意:mysql_*系関数は非推奨です

mysql_connect()やmysql_query()などのmysql_*系関数は、PHP 5.5で非推奨となり、PHP 7以降では完全に削除されています。そのため、現在の環境では上記のコードは動作しない点に注意してください。

現行のPHPでは、mysqli拡張モジュールまたはPDOの利用が推奨されています。参考までに、まったく同じ処理をmysqliで書き直した例を以下に示します。

<?php
    $dbhost = 'localhost:3036';
    $dbuser = 'root';
    $dbpass = 'rootpassword';
    $conn = mysqli_connect($dbhost, $dbuser, $dbpass);

    if(! $conn ) {
        die('接続できませんでした: ' . mysqli_connect_error());
    }
    $sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date
        FROM tutorials_tbl';

    mysqli_select_db($conn, 'TUTORIALS');
    $retval = mysqli_query( $conn, $sql );

    if(! $retval ) {
        die('データを取得できませんでした: ' . mysqli_error($conn));
    }

    while($row = mysqli_fetch_array($retval, MYSQLI_ASSOC)) {
        echo "Tutorial ID :{$row['tutorial_id']} <br> ".
            "Title: {$row['tutorial_title']} <br> ".
            "Author: {$row['tutorial_author']} <br> ".
            "Submission Date : {$row['submission_date']} <br> ".
            "--------------------------------<br>";
    }
    echo "データの取得に成功しました\n";
    mysqli_close($conn);
?>

まとめ

MySQLテーブルの全レコードを表示する流れは、①データベースへ接続 → ②SELECT文を実行 → ③fetch関数で1行ずつ取得して表示 → ④接続を閉じるという4つのステップで構成されます。古いmysql_*系関数は現在利用できないため、新規開発では必ずmysqliかPDOを使用しましょう。また、ユーザー入力をSQLに渡す場合は、SQLインジェクション対策としてプリペアドステートメントの活用も併せて検討してください。

  1. MySQLでGROUP BYとGROUP_CONCATを使って各グループのレコード数とID一覧を1行で表示する方法

    MySQLでは、GROUP_CONCAT()とCOUNT()、さらにGROUP BY句を組み合わせることで、同じ値を持つ複数のレコードを1行にまとめ、その件数と一緒に表示することができます。本記事では、実際にテーブルを作成し、データを挿入したうえで、グループごとのレコード数とIDの一覧を取得する手順を解説します。サンプルテーブルの作成まず、以下のコマンドでテーブルを作成します。mysql> create table DemoTable    -> (    -> CompanyId int NOT

  2. MySQLでテーブルの日付レコードを変更する方法|UPDATEとDATE_ADD()の使い方

    MySQLで保存済みの日付データに年数を加算して変更したい場合、UPDATEコマンドとDATE_ADD()関数を組み合わせることで簡単に実現できます。ここでは、実際のSQLクエリ例を使いながら、日付レコードを変更する手順を順番に解説します。1. テーブルを作成するまず、日付型(date)のカラムを持つテーブルを作成します。mysql> create table DemoTable1984 ( ShippingDate date ); Query OK, 0 rows affected (0.00 sec)2. レコードを挿入する次に、INSERTコマンドを使ってテ