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();
?>-
MySQLでテーブルにデータを挿入するストアドプロシージャの作成方法
MySQLでは、ストアドプロシージャを利用することで、テーブルへのデータ挿入処理を再利用可能な形でまとめることができます。本記事では、実際にテーブルを作成し、データを挿入するためのストアドプロシージャを定義して呼び出すまでの一連の手順を解説します。 1. 挿入先となるテーブルを作成する まず、データを挿入するためのテーブルを用意します。以下の例では、Id・Name・Age の3つのカラムを持つテーブル「insertDataUsingStoredProcedure」を作成しています。 mysql> create table insertDataUsingStoredProcedure
-
PythonでMySQLのテーブルから全データを取得する方法を解説
MySQLのテーブルは、行(レコード)と列(フィールド)で構成されています。列はデータの項目(フィールド)を定義し、行は実際のデータレコードを表します。テーブルに格納されたデータは、利用するために取得する必要があります。場合によっては、テーブルからすべてのデータを一度に取得したいこともあるでしょう。テーブルからすべての行を取得するには、SELECT * ステートメントを使用します。基本構文SELECT * FROM テーブル名上記の構文における「*」は、テーブルからすべての行を取得することを意味しています。PythonでMySQLを使ってテーブルの全データを取得する手順MySQLコネクタをイン