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

Safe Pattern Matching with LIKE البحث الجزئي الآمن بالمعامل LIKE

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

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

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

عند استخدام البحث الجزئي LIKE مع الاستعلامات المحضرة، أضف علامات النسبة المئوية % داخل قيمة المتغير في PHP، ولا تضع علامات تنصيص حول المعامل داخل جملة SQL.

  • اكتب في جملة الاستعلام WHERE title LIKE :search، ومرّر القيمة في PHP على الصورة ["search" => "%$keyword%"].
  • كتابة LIKE "%:search%" داخل نص SQL خطأ شائع؛ لأن PDO يعتبرها نصاً حرفياً ثابتاً ولن يربط المعامل :search.
  • لمنع المستخدم من إدخال رموز البحث % أو _ كحروف عادية، يمكنك تحييدها مسبقاً عبر addcslashes($keyword, "%_").

تستخدم جملة SQL المعامل المجرد LIKE :q، بينما يضيف كود PHP علامتي النسبة المئوية في القيمة الممررة "%$term%".

PHP
<?php
$pdo = new PDO('sqlite::memory:');
$pdo->exec('CREATE TABLE articles (id INTEGER PRIMARY KEY, title TEXT)');
$pdo->exec("INSERT INTO articles (title) VALUES ('Mastering PHP Streams'), ('Intro to CSS Grid')");
$term = 'PHP';
$stmt = $pdo->prepare('SELECT title FROM articles WHERE title LIKE :q');
$stmt->execute(['q' => "%$term%"]);
echo "Found: " . $stmt->fetchColumn() . "\n";