PHP MySQL Use The ORDER BY Clause

استفاده از دستور ORDER BY در PHP و MySQL
دستور ORDER BY
در MySQL برای مرتبسازی نتایج یک پرسوجو (Query) به صورت صعودی (ASC) یا نزولی (DESC) استفاده میشود. در PHP، این دستور معمولاً همراه با mysqli
یا PDO
برای دریافت دادهها از پایگاه داده استفاده میشود.
۱. مرتبسازی بر اساس یک ستون (صعودی و نزولی)
مثال: مرتبسازی نتایج بر اساس نام به صورت صعودی
<?php
$conn = new mysqli(“localhost”, “root”, “”, “test_db”);
// بررسی اتصال
if ($conn->connect_error) {
die(“اتصال ناموفق: “ . $conn->connect_error);
}
// اجرای کوئری با ORDER BY
$sql = “SELECT id, name, age FROM users ORDER BY name ASC”; // مرتبسازی به ترتیب حروف الفبا
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
echo “ID: “ . $row[“id”] . ” – Name: “ . $row[“name”] . ” – Age: “ . $row[“age”] . “<br>”;
}
} else {
echo “دادهای یافت نشد.”;
}
$conn->close();
?>
📌 در این مثال، دادهها بر اساس نام (name
) به ترتیب صعودی (A → Z) مرتب شدهاند.
📌 برای مرتبسازی نزولی، مقدار DESC
را جایگزین ASC
کنید.
۲. مرتبسازی بر اساس چندین ستون
گاهی اوقات نیاز دارید که دادهها را ابتدا بر اساس یک ستون و سپس در صورت تکراری بودن آن، بر اساس ستون دیگر مرتب کنید.
مثال: مرتبسازی بر اساس سن به صورت نزولی، سپس بر اساس نام به صورت صعودی
$sql = “SELECT id, name, age FROM users ORDER BY age DESC, name ASC”;
✅ ابتدا کاربران با سن بیشتر در اول نمایش داده میشوند.
✅ در صورت برابر بودن سن، مرتبسازی بر اساس نام به صورت صعودی انجام میشود.
۳. محدود کردن تعداد نتایج مرتبشده با LIMIT
گاهی نیاز دارید که فقط تعداد مشخصی از نتایج مرتبشده را دریافت کنید.
مثال: دریافت ۵ کاربر با بیشترین سن
$sql = “SELECT id, name, age FROM users ORDER BY age DESC LIMIT 5”;
✅ فقط ۵ کاربری که بیشترین سن را دارند، دریافت میشوند.
۴. مرتبسازی پویا بر اساس ورودی کاربر
اگر بخواهید کاربر نوع مرتبسازی را مشخص کند (مثلاً از طریق یک فیلد فرم)، میتوانید از یک مقدار متغیر استفاده کنید.
$orderBy = isset($_GET[‘order’]) ? $_GET[‘order’] : ‘name’; // مقدار پیشفرض “name”
$orderDir = isset($_GET[‘dir’]) && $_GET[‘dir’] === ‘desc’ ? ‘DESC’ : ‘ASC’;
$sql = “SELECT id, name, age FROM users ORDER BY By $order$orderDir“;
🔴 نکته امنیتی: برای جلوگیری از SQL Injection، اطمینان حاصل کنید که مقدار متغیر ورودی معتبر باشد.
جمعبندی
✅ ORDER BY column ASC
→ مرتبسازی صعودی
✅ ORDER BY column DESC
→ مرتبسازی نزولی
✅ ORDER BY col1 DESC, col2 ASC
→ مرتبسازی بر اساس چندین ستون
✅ ORDER BY column DESC LIMIT n
→ دریافت n نتیجه مرتبشده
دیدگاهتان را بنویسید