PHP – محدود کردن انتخاب داده‌ها در پایگاه داده MySQL

MySQL به شما امکان می‌دهد تا با استفاده از دستور LIMIT و OFFSET تعداد رکوردهای برگشتی را محدود کنید. این روش به ویژه در صفحات چندگانه یا پیجینیشن (Pagination) مفید است و می‌تواند عملکرد جستجو را بهبود بخشد، به ویژه در جداول بزرگ.

استفاده از LIMIT و OFFSET

انتخاب رکوردهای اول تا ۳۰

اگر بخواهید تمام رکوردها از 1 تا 30 را انتخاب کنید، دستور SQL به صورت زیر خواهد بود:

$sql = "SELECT * FROM Orders LIMIT 30";

این دستور تمام رکوردهای اولیه تا رکورد شماره ۳۰ را برمی‌گرداند.

انتخاب رکوردهای ۱۶ تا ۲۵

برای انتخاب رکوردهای خاصی (مثلاً رکوردهای ۱۶ تا ۲۵)، باید از LIMIT و OFFSET استفاده کنید:

  1. با استفاده از OFFSET:

$sql = "SELECT * FROM Orders LIMIT 10 OFFSET 15";
  • این دستور می‌گوید که “فقط ۱۰ رکورد برگردان، از رکورد شماره ۱۶ (OFFSET 15) شروع کن.”

  • با استفاده از سینتکس کوتاه‌تر:

$sql = "SELECT * FROM Orders LIMIT 15, 10";

در اینجا، عدد اول (۱۵) مکان شروع را مشخص می‌کند و عدد دوم (۱۰) تعداد رکوردهای برگشتی را مشخص می‌کند. این روش سینتکس کوتاه‌تری است برای استفاده از LIMIT و OFFSET.

مثال‌های عملی با PHP

MySQLi Object-oriented

مثال: انتخاب رکوردهای ۱۶ تا ۲۵

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

// ایجاد اتصال
$conn = new mysqli($servername, $username, $password, $dbname);

// بررسی اتصال
if ($conn->connect_error) {
  die("اتصال ناموفق: " . $conn->connect_error);
}

// آماده‌سازی و اجرای کوئری با LIMIT و OFFSET
$sql = "SELECT * FROM Orders LIMIT 10 OFFSET 15";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
  // خروجی داده‌های هر رکورد
  while($row = $result->fetch_assoc()) {
    echo "id: " . $row["id"]. " - Order: " . $row["order_name"]. "<br>";
  }
} else {
  echo "نتیجه‌ای وجود ندارد";
}

$conn->close();
?>

MySQLi Procedural

مثال: انتخاب رکوردهای ۱۶ تا ۲۵

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

// ایجاد اتصال
$conn = mysqli_connect($servername, $username, $password, $dbname);

// بررسی اتصال
if (!$conn) {
  die("اتصال ناموفق: " . mysqli_connect_error());
}

// آماده‌سازی و اجرای کوئری با LIMIT و OFFSET
$sql = "SELECT * FROM Orders LIMIT 10 OFFSET 15";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
  // خروجی داده‌های هر رکورد
  while($row = mysqli_fetch_assoc($result)) {
    echo "id: " . $row["id"]. " - Order: " . $row["order_name"]. "<br>";
  }
} else {
  echo "نتیجه‌ای وجود ندارد";
}

mysqli_close($conn);
?>

PDO

مثال: انتخاب رکوردهای ۱۶ تا ۲۵

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

try {
  // ایجاد اتصال
  $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
  // تنظیم حالت خطای PDO به استثنا
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  // آماده‌سازی و اجرای کوئری با LIMIT و OFFSET
  $sql = "SELECT * FROM Orders LIMIT 10 OFFSET 15";
  $stmt = $conn->prepare($sql);
  $stmt->execute();

  // تنظیم آرایه برگشتی به صورت associative
  $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
  foreach($stmt->fetchAll() as $row) {
    echo "id: " . $row["id"]. " - Order: " . $row["order_name"]. "<br>";
  }
} catch(PDOException $e) {
  echo "خطا: " . $e->getMessage();
}

$conn = null;
?>

نتیجه‌گیری

  • LIMIT برای محدود کردن تعداد رکوردهایی که برگردانده می‌شود استفاده می‌شود.
  • OFFSET برای تعیین مکان شروع انتخاب رکوردها به کار می‌رود.
  • استفاده از این تکنیک‌ها به بهبود عملکرد جستجو و پیاده‌سازی پیجینیشن کمک می‌کند.

با استفاده از این روش‌ها، می‌توانید داده‌های پایگاه داده خود را به طور مؤثر مدیریت کرده و تجربه کاربری بهتری را برای کاربران خود فراهم کنید.

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
JavaScript - رویدادها (Events)

JavaScript – رویدادها (Events)

رویدادهای HTML رویدادها در HTML، “اتفاقاتی” هستند که برای عناصر HTML رخ می‌دهند. این اتفاقات می‌توانند ناشی از کار...

بیشتر بخوانید
JavaScript - سازنده‌های شیء (Object Constructors)

JavaScript – سازنده‌های شیء (Object Constructors)

ساخت آبجکت با تابع سازنده (Object Constructor Function) برای ساخت چندین آبجکت مشابه، از تابع سازنده استفاده می‌شود. این...

بیشتر بخوانید
JavaScript - نمایش شیء (Object Display)

JavaScript – نمایش شیء (Object Display)

نحوه نمایش آبجکت‌ها در جاوااسکریپت هنگام نمایش یک آبجکت جاوااسکریپت به صورت مستقیم، خروجی معمولاً به شکل [object Object]...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.