شرح صفوف ومحتوى الفقرة
عند استخدام البحث الجزئي 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";