여러분이 사용하고 계신 브라우저는 HTML5를 지원하지 않기 때문에 몇몇 요소가 제대로 보이도록 JScript를 사용하고 있습니다. 하지만 여러분의 브라우저 설정에서 스크립트 기능이 꺼져있으므로, 현재 페이지를 제대로 확인하시려면 스크립트 기능을 켜주셔야 합니다. PHP - MySQL ORDER BY 절
PHP – MySQL ORDER BY 절
2개월전 작성
2개월전 수정

데이터 선택 및 정렬

ORDER BY 절은 결과 집합을 오름차순 또는 내림차순으로 정렬하는 데 사용된다.

ORDER BY 절은 기본적으로 레코드를 오름차순으로 정렬한다.
레코드를 내림차순으로 정렬하려면 DESC 키워드를 사용한다.

SELECT column_name(s) FROM table_name ORDER BY column_name(s) ASC|DESC

MySQLi 객체 지향

PHP
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

$conn = new mysqli($servername, $username, $password, $dbname);
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) {
  while($row = $result->fetch_assoc()) {
    echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "
"; } } else { echo "0 results"; } $conn->close(); ?>

먼저 MyGuests 테이블에서 id, name 및 lastname 열을 선택하는 SQL 쿼리를 설정한다.
레코드는 성 열을 기준으로 정렬된다.
다음 코드 줄은 쿼리를 실행하고 결과 데이터를 $result라는 변수에 넣는다.

그런 다음 function num_rows()반환된 행이 0개 이상 있는지 확인한다.

반환된 행이 0개 이상인 경우 함수는 fetch_assoc()모든 결과를 반복할 수 있는 연관 배열에 넣는다.
while()루프는 결과 집합을 반복하고 id, firstname 및 lastname 열의 데이터를 출력한다.

결과를 HTML 테이블에 넣어보자.

PHP
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

$conn = new mysqli($servername, $username, $password, $dbname);
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 "";
  while($row = $result->fetch_assoc()) {
    echo "";
  }
  echo "
IDName
".$row["id"]."".$row["firstname"]." ".$row["lastname"]."
"; } else { echo "0 results"; } $conn->close(); ?>

MySQLi 절차

PHP
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

$conn = mysqli_connect($servername, $username, $password, $dbname);
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) {
  while($row = mysqli_fetch_assoc($result)) {
    echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "
"; } } else { echo "0 results"; } mysqli_close($conn); ?>

PDO

준비된 문을 사용해보자.

여기에서 MyGuests 테이블에서 id, name 및 lastname 열을 선택한다.
레코드는 성 열을 기준으로 정렬되며 HTML 테이블에 표시된다.

PHP
<?php
echo "";
echo "";

class TableRows extends RecursiveIteratorIterator {
  function __construct($it) {
    parent::__construct($it, self::LEAVES_ONLY);
  }

  function current() {
    return "";
  }

  function beginChildren() {
    echo "";
  }

  function endChildren() {
    echo "" . "\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();

  $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 "
IdFirstnameLastname
" . parent::current(). "
"; ?>
참고
Mingg`s Diary
밍구
공부 목적 블로그