PHP MySQL استخدم جملة ORDER BY
حدد البيانات واطلبها من قاعدة بيانات MySQL
يتم استخدام عبارة ORDER BY لفرز مجموعة النتائج بترتيب تصاعدي أو تنازلي.
تقوم عبارة ORDER BY بفرز السجلات بترتيب تصاعدي افتراضيًا. لفرز السجلات بترتيب تنازلي ، استخدم الكلمة الأساسية DESC.
SELECT column_name(s)
FROM table_name ORDER BY column_name(s) ASC|DESC
لمعرفة المزيد حول SQL ، يرجى زيارة البرنامج التعليمي لـ SQL .
حدد البيانات واطلبها باستخدام MySQLi
يحدد المثال التالي أعمدة المعرف والاسم الأول والاسم الأخير من جدول MyGuests. سيتم ترتيب السجلات حسب عمود الاسم الأخير:
مثال (موجه نحو كائنات 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();
?>
خطوط الكود المراد شرحها من المثال أعلاه:
أولاً ، قمنا بإعداد استعلام SQL الذي يحدد أعمدة المعرف والاسم الأول والاسم الأخير من جدول MyGuests. سيتم ترتيب السجلات حسب عمود الاسم الأخير. يقوم السطر التالي من الكود بتشغيل الاستعلام ويضع البيانات الناتجة في متغير يسمى $ result.
بعد ذلك ، function num_rows()
يتم إرجاع عمليات التحقق في حالة وجود أكثر من صفر من الصفوف.
إذا كان هناك أكثر من صفر من الصفوف التي تم إرجاعها ، فإن الوظيفة fetch_assoc()
تضع جميع النتائج في مصفوفة ترابطية يمكننا تكرارها. تدور while()
الحلقة عبر مجموعة النتائج وتخرج البيانات من أعمدة المعرف والاسم الأول والاسم الأخير.
يوضح المثال التالي نفس المثال أعلاه ، بطريقة 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. سيتم ترتيب السجلات حسب عمود الاسم الأخير ، وسيتم عرضها في جدول 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>";
?>