PHP – محدود کردن انتخاب دادهها در پایگاه داده MySQL
MySQL به شما امکان میدهد تا با استفاده از دستور LIMIT
و OFFSET
تعداد رکوردهای برگشتی را محدود کنید. این روش به ویژه در صفحات چندگانه یا پیجینیشن (Pagination) مفید است و میتواند عملکرد جستجو را بهبود بخشد، به ویژه در جداول بزرگ.
استفاده از LIMIT و OFFSET
انتخاب رکوردهای اول تا ۳۰
اگر بخواهید تمام رکوردها از 1 تا 30 را انتخاب کنید، دستور SQL به صورت زیر خواهد بود:
$sql = "SELECT * FROM Orders LIMIT 30";
این دستور تمام رکوردهای اولیه تا رکورد شماره ۳۰ را برمیگرداند.
انتخاب رکوردهای ۱۶ تا ۲۵
برای انتخاب رکوردهای خاصی (مثلاً رکوردهای ۱۶ تا ۲۵)، باید از LIMIT
و OFFSET
استفاده کنید:
-
با استفاده از 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 برای تعیین مکان شروع انتخاب رکوردها به کار میرود.
- استفاده از این تکنیکها به بهبود عملکرد جستجو و پیادهسازی پیجینیشن کمک میکند.
با استفاده از این روشها، میتوانید دادههای پایگاه داده خود را به طور مؤثر مدیریت کرده و تجربه کاربری بهتری را برای کاربران خود فراهم کنید.
برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید. صفحه ورود و ثبت نام