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

PHPスクリプトでORDER BY句を使ってMySQLテーブルのデータを並べ替える方法


MySQLテーブルから取得したデータを特定の順序で表示したい場合は、SQLのORDER BY句をPHPのmysql_query()関数内で使用します。この関数はSQLコマンドを実行する役割を担い、実行後には別のPHP関数であるmysql_fetch_array()を使って、選択されたすべてのデータを1行ずつ取り出すことができます。

ORDER BY句の基本構文

ORDER BY句はSELECT文の末尾に記述します。昇順(小さい順・五十音順)に並べる場合は「ASC」、降順(大きい順・逆順)に並べる場合は「DESC」を指定します。省略した場合はデフォルトで昇順になります。

SELECT column1, column2 FROM table_name ORDER BY column_name [ASC|DESC]

サンプルコード

次の例では、「tutorials_tbl」テーブルからデータを取得し、著者名(tutorial_author)を降順(DESC)で並べ替えた結果を返すPHPスクリプトを紹介します。

<?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
      ORDER BY tutorial_author DESC';

   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_connect()でサーバーに接続し、失敗した場合はdie()でエラーメッセージを表示して処理を終了します。
  • SQL文の作成: SELECT文に「ORDER BY tutorial_author DESC」を追加することで、著者名の降順にデータが並べ替えられます。
  • 結果の取得と表示: mysql_fetch_array()をwhileループで回すことで、各行を連想配列として受け取り、チュートリアルID、タイトル、著者、投稿日を順に出力します。
  • 接続の切断: 処理完了後はmysql_close()で接続を閉じます。

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

上記のmysql_connect()mysql_query()といったmysql_*系の関数は、PHP 5.5.0で非推奨となり、PHP 7.0以降では削除されています。現在の開発では、mysqli拡張モジュールまたはPDOの使用が推奨されます。

参考までに、mysqliを使った同様の処理は以下のように記述できます。

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

   if ($conn->connect_error) {
      die('Could not connect: ' . $conn->connect_error);
   }

   $sql = 'SELECT tutorial_id, tutorial_title,
      tutorial_author, submission_date
      FROM tutorials_tbl
      ORDER BY tutorial_author DESC';
   $retval = $conn->query($sql);

   while($row = $retval->fetch_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";
   $conn->close();
?>

  1. MySQLでテーブルにデータを挿入するストアドプロシージャの作成方法

    MySQLでは、ストアドプロシージャを利用することで、テーブルへのデータ挿入処理を再利用可能な形でまとめることができます。本記事では、実際にテーブルを作成し、データを挿入するためのストアドプロシージャを定義して呼び出すまでの一連の手順を解説します。 1. 挿入先となるテーブルを作成する まず、データを挿入するためのテーブルを用意します。以下の例では、Id・Name・Age の3つのカラムを持つテーブル「insertDataUsingStoredProcedure」を作成しています。 mysql> create table insertDataUsingStoredProcedure

  2. PythonでMySQLのテーブルから全データを取得する方法を解説

    MySQLのテーブルは、行(レコード)と列(フィールド)で構成されています。列はデータの項目(フィールド)を定義し、行は実際のデータレコードを表します。テーブルに格納されたデータは、利用するために取得する必要があります。場合によっては、テーブルからすべてのデータを一度に取得したいこともあるでしょう。テーブルからすべての行を取得するには、SELECT * ステートメントを使用します。基本構文SELECT * FROM テーブル名上記の構文における「*」は、テーブルからすべての行を取得することを意味しています。PythonでMySQLを使ってテーブルの全データを取得する手順MySQLコネクタをイン