TECH I.S.

PHP MySQLはORDER BY句を使用します


MySQLデータベースからデータを選択して注文する

ORDER BY句は、結果セットを昇順または降順で並べ替えるために使用されます。

ORDER BY句は、デフォルトで昇順でレコードをソートします。レコードを降順に並べ替えるには、DESCキーワードを使用します。

<div>SELECT column_name(s)FROM table_name ORDER BY column_name(s) ASC|DESC </div>

SQLの詳細については、こちらSQL チュートリアルをご覧ください。


MySQLiでデータを選択して並べ替える

次の例では、MyGuestsテーブルからid、firstname、およびlastname列を選択します。レコードは姓の列で並べ替えられます。

例 (MySQLi オブジェクト指向)

<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) {   die("Connection failed: " . $conn->connect_error); } $sql = "SELECT id, firstname, lastname FROM MyGuests ORDER BY lastname"; $result = $conn->query($sql); if ($result->num_rows > 0) {   // output data of each row   while($row = $result->fetch_assoc()) {     echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";   } } else {   echo "0 results"; } $conn->close(); ?>

上記の例から説明するコード行:

まず、MyGuestsテーブルからid、firstname、およびlastname列を選択するSQLクエリを設定します。レコードは姓の列で並べ替えられます。コードの次の行はクエリを実行し、結果のデータを$resultという変数に入れます。

そうしてfunction num_rows()返される行が0行以上あるかどうかをチェックします。

返される行が0行を超える場合、関数はfetch_assoc()すべての結果をループ可能な連想配列に入れます。while()loopは結果セットをループし、id、firstname、およびlastname列からデータを出力します。

次の例は、上記の例と同じものをMySQLiの手順で示しています。

例 (MySQLi プロシージャル)

<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; // Create connection $conn = mysqli_connect($servername, $username, $password, $dbname); // Check connection if (!$conn) {   die("Connection failed: " . mysqli_connect_error()); } $sql = "SELECT id, firstname, lastname FROM MyGuests ORDER BY lastname"; $result = mysqli_query($conn, $sql); if (mysqli_num_rows($result) > 0) {   // output data of each row   while($row = mysqli_fetch_assoc($result)) {     echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";   } } else {   echo "0 results"; } mysqli_close($conn); ?>


結果をHTML テーブルに入れることもできます。

例 (MySQLi オブジェクト指向)

<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) {   die("Connection failed: " . $conn->connect_error); } $sql = "SELECT id, firstname, lastname FROM MyGuests ORDER BY lastname"; $result = $conn->query($sql); if ($result->num_rows > 0) {   echo "<table><tr><th>ID</th><th>Name</th></tr>";   // output data of each row   while($row = $result->fetch_assoc()) {     echo "<tr><td>".$row["id"]."</td><td>".$row["firstname"]." ".$row["lastname"]."</td></tr>";   }   echo "</table>"; } else {   echo "0 results"; } $conn->close(); ?>


PDOでデータを選択 (+ 準備済みステートメント)

次の例では、準備済みステートメントを使用しています。

ここでは、MyGuestsテーブルからid、firstname、およびlastname列を選択します。レコードは姓の列で並べ替えられ、HTMLテーブルに表示されます。

例 (PDO)

<?php echo "<table style='border: solid 1px black;'>"; echo "<tr><th>Id</th><th>Firstname</th><th>Lastname</th></tr>"; class TableRows extends RecursiveIteratorIterator {   function construct($it) {     parent::construct($it, self::LEAVES_ONLY);   }   function current() {     return "<td style='width:150px;border:1px solid black;'>" . parent::current(). "</td>";   }   function beginChildren() {     echo "<tr>";   }   function endChildren() {     echo "</tr>" . "\n";   } } $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDBPDO"; try {   $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);   $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);   $stmt = $conn->prepare("SELECT id, firstname, lastname FROM MyGuests ORDER BY lastname");   $stmt->execute();   // set the resulting array to associative   $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);   foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {     echo $v;   } } catch(PDOException $e) {   echo "Error: " . $e->getMessage(); } $conn = null; echo "</table>"; ?>



プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細