كيف يمكنك إجراء عمليات بحث غامضة باستخدام المعلمات المرتبطة في شركة تنمية نفط عمان؟

StackOverflow https://stackoverflow.com/questions/60779

  •  09-06-2019
  •  | 
  •  

سؤال

تحاول أن تفعل هذا النوع من الأشياء ...

WHERE username LIKE '%$str%'

... ولكن باستخدام المعلمات المرتبطة للبيانات المعدة في شركة تنمية نفط عمان.على سبيل المثال:

$query = $db->prepare("select * from comments where comment like :search");
$query->bindParam(':search', $str);
$query->execute();

لقد جربت العديد من التباديل لعلامات الاقتباس المفردة وعلامات % وقد تعارضت معي.

يبدو أنني أتذكر صراعي مع هذا في وقت ما من قبل ولكن لا يمكنني العثور على أي مراجع.هل يعرف أحد كيف (إذا؟) يمكنك القيام بذلك بشكل جيد في شركة تنمية نفط عمان باستخدام المعلمات المسماة؟

هل كانت مفيدة؟

المحلول

آه.وجدت تعليقًا على php.net يذكرني بالإجابة؛تحتاج إلى حرف بدل القيمة الخاصة بك قبل تقييم bindParam، ولا تقلق بشأن اقتباسها.لذلك على سبيل المثال هذا يعمل بشكل جيد:

$str = "%$str%";
$query = $db->prepare("select * from comments where comment like :search");
$query->bindParam(':search', $str);
$query->execute();

نصائح أخرى

وبعد 5 سنوات، في حالة تعثر أي شخص آخر في هذا، هناك طريقة بديلة اكتشفتها.لم يكن الحل المقبول مناسبًا لموقفي، ولكن يبدو أن هذه الطريقة تنجز المهمة أيضًا:

$query = $db->prepare("select * FROM table WHERE field LIKE CONCAT('%',:search,'%')");
$query->bindParam(':search', $str);
$query->execute();

لست متأكدًا مما إذا كان سيكون هناك أداء جيد بسبب الحمل الزائد للاتصال بـ CONCAT وظيفة، ولكن أردت تمرير هذا على طول كخيار.نأمل أن يساعد شخص ما.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top