انتقل إلى محتوى الدرس

PDO Query Filtering Rules Summary ملخص قواعد الفلترة والتقسيم الصفحي

ابنِ فلاتر بحث ديناميكية بـ LIKE وIN، وأمّن الترتيب بـ ORDER BY، ونفّذ تقسيم الصفحات Pagination عبر LIMIT وOFFSET في PDO.
1 صفوف تعليمية
PHP
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

اجمع بين ربط المعاملات للقيم، والقوائم البيضاء لأسماء الأعمدة، والربط الرقمي لتقسيم الصفحات لضمان سرعة وأمان كافة استعلامات PDO.

  • استخدم استعلام COUNT(*) بنفس شروط WHERE لحساب إجمالي عدد الصفحات عبر $totalPages = (int) ceil($totalRows / $perPage).
  • تذكر أن تمرير مصفوفة إلى $stmt->execute([...]) يربط جميع عناصرها كنصوص PDO::PARAM_STR افتراضياً؛ لذا استخدم bindValue(..., PDO::PARAM_INT) مع أرقام التقسيم الصفحي.
  • لا تثق أبداً بمعاملات الرابط مثل $_GET["sort"] أو $_GET["page"] دون فحص وتطهير.

مع وجود 45 سجلاً و10 سجلات لكل صفحة، تعطي ceil(45 / 10) إجمالي 5 صفحات، وتبدأ الصفحة الثالثة عند الإزاحة 20.

جزء استعلام SQLالطريقة الآمنة للتعامل مع المدخلاتالخطأ الشائع الواجب تجنبه
WHERE col = :valBind via execute(["val" => $v])Interpolating "$v" directly into SQL
WHERE col LIKE :qBind ["q" => "%$term%"] in PHPWriting LIKE "%:q%" inside SQL string
WHERE id IN (?, ?, ?)Generate ? via array_fill()Binding an array to a single IN (:ids)
ORDER BY / LIMITWhitelist column; bindValue(PDO::PARAM_INT)Binding column name as ORDER BY :col

PHP
<?php
$totalRows = 45;
$perPage = 10;
$page = max(1, 3);
$totalPages = (int) ceil($totalRows / $perPage);
$offset = ($page - 1) * $perPage;
echo "Page $page of $totalPages | LIMIT $perPage OFFSET $offset\n";
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

اجمع بين ربط المعاملات للقيم، والقوائم البيضاء لأسماء الأعمدة، والربط الرقمي لتقسيم الصفحات لضمان سرعة وأمان كافة استعلامات PDO. استخدم استعلام COUNT(*) بنفس شروط WHERE لحساب إجمالي عدد الصفحات عبر $totalPages = (int) ceil($totalRows / $perPage). تذكر أن تمرير مصفوفة إلى $stmt->execute([...]) يربط جميع عناصرها كنصوص PDO::PARAM_STR افتراضياً؛ لذا استخدم bindValue(..., PDO::PARAM_INT) مع أرقام التقسيم الصفحي. لا تثق أبداً بمعاملات الرابط مثل $_GET["sort"] أو $_GET["page"] دون فحص وتطهير.