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

PHPのmysql_fetch_assoc()関数でMySQLテーブルの全レコードを表示する方法

PHPスクリプトでmysql_fetch_assoc()関数を使用すると、MySQLテーブルから取得した結果セットを1行ずつ連想配列として取り出し、テーブル内のすべてのレコードを簡単に表示できます。

以下の例では、「Tutorials_tbl」というテーブルからすべてのレコードを取得し、ブラウザ上に出力しています。

サンプルコード

<?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_assoc($retval)) {
        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_connect() でデータベースに接続し、失敗した場合は die() でエラーメッセージを表示して処理を終了します。
  • mysql_query() でSELECT文を実行し、結果セットを取得します。
  • while ループ内で mysql_fetch_assoc() を呼び出すことで、結果セットの各行がカラム名をキーとする連想配列として順番に取り出されます。レコードがなくなると false を返すため、ループが自動的に終了します。

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

mysql_connect()mysql_fetch_assoc() といったmysql_系関数は、PHP 5.5で非推奨となり、PHP 7.0以降では完全に削除されました。そのため、これらのコードは最新のPHP環境では動作しません。

現在の開発では、mysqli拡張モジュール または PDO の使用が公式に推奨されています。上記と同じ処理をmysqliで書き直すと、次のようになります。

<?php
    $conn = mysqli_connect('localhost', 'root', 'rootpassword', 'TUTORIALS');

    if(!$conn) {
        die('接続できませんでした: ' . mysqli_connect_error());
    }

    $sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl';
    $retval = mysqli_query($conn, $sql);

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

    while($row = mysqli_fetch_assoc($retval)) {
        echo "チュートリアルID :{$row['tutorial_id']} <br> ".
            "タイトル: {$row['tutorial_title']} <br> ".
            "著者: {$row['tutorial_author']} <br> ".
            "投稿日: {$row['submission_date']} <br> ".
            "--------------------------------<br>";
    }
    echo "データの取得に成功しました\n";
    mysqli_close($conn);
?>

このように、mysqli_fetch_assoc() も元の関数と同様に、各行を連想配列として返してくれるため、ほぼ同じ構造のまま移行できます。新規プロジェクトでは、セキュリティ面でも優れているプリペアドステートメントと併せて、mysqliまたはPDOの利用を検討してください。

  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コマンドを使ってテ