Eğer PDO'de bağlı parametreler kullanılarak bulanık arama nasıl yapabilirim?

2 Cevap php

Bu tür bir şey yapmaya çalışıyor ...

WHERE username LIKE '%$str%'

... Ama PDO'de hazırlanan tablolarda bağlı parametreleri kullanarak. örneğin:

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

Ben tek tırnak ve% işaretleri sayısız permütasyon denedim ve sadece benimle haç oluyor.

Ben önce bazı noktada bu ile güreş hatırlamak görünüyor ama herhangi bir referans bulamıyorum. Nasıl (varsa?) Adında parametreleri ile PDO'de güzel yapabilirsiniz biliyor mu?

2 Cevap

Ah. Cevap hatırlattı php.net bir yorum buldum; Eğer bindParam değerlendirilir önce değer joker değil, onu alıntı hakkında endişelenmenize gerek. Yani, örneğin, bu çalışıyor:

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

5 yıl sonra, bu durum üzerine herkesten tökezlemeleri içinde, ben keşfettim alternatif bir yöntem yoktur. Kabul edilen bir çözüm için benim durum gerçekten mümkün değildi, ancak bu yöntem işi de halletmek gibi görünüyor:

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

Ben nedeniyle CONCAT işlevinin yükü vurmak bir performans olacak emin değilim, ama bir seçenek olarak birlikte bu geçmek istedi. Umarım birisi yardımcı olacaktır.