php - texto - ¿Cómo se hacen búsquedas difusas utilizando los parámetros vinculados en PDO?
string strip_tags (2)
Ah. Encontré un comentario en php.net que me recordó la respuesta; necesita comodín su valor antes de que se evalúe bindParam, y no preocuparse por citarlo. Entonces, por ejemplo, esto funciona bien:
$str = "%$str%";
$query = $db->prepare("select * from comments where comment like :search");
$query->bindParam('':search'', $str);
$query->execute();
Tratando de hacer este tipo de cosas ...
WHERE username LIKE ''%$str%''
... pero usando parámetros vinculados a las declaraciones preparadas en PDO. p.ej:
$query = $db->prepare("select * from comments where comment like :search");
$query->bindParam('':search'', $str);
$query->execute();
Probé varias permutaciones de comillas simples y% de signos, y se está volviendo loco conmigo.
Parece que recuerdo haber luchado con esto en algún momento antes, pero no puedo encontrar ninguna referencia. ¿Alguien sabe cómo (si?) Puede hacerlo bien en PDO con parámetros nombrados?
5 años después, en caso de que alguien más se tope con esto, hay un método alternativo que descubrí. La solución aceptada no era realmente factible para mi situación, pero este método parece hacer bien el trabajo:
$query = $db->prepare("select * FROM table WHERE field LIKE CONCAT(''%'',:search,''%'')");
$query->bindParam('':search'', $str);
$query->execute();
No estoy seguro de si habrá un golpe de rendimiento debido a la sobrecarga de llamar a la función CONCAT
, pero quería pasar esto como una opción. Espero que ayude a alguien.