2010-10-25 10 views
5

Per eseguire una ricerca LIKE con PDO, è necessario aggiungere lo % al parametro prima di passarlo.Come fare la ricerca LIKE con PDO?

Questo funziona:

$qry = ' 
    SELECT product_id 
    FROM cart_product 
    WHERE product_manufacturer_num LIKE :search_string 
'; 
$sth = $this->pdo->prepare($qry); 
$sth->execute(array("search_string"=>'%'.$search_string.'%')); 

A me questo sembra più un hack, C'è un modo più ufficiale di fare questo?

+0

Duplicato di: http://stackoverflow.com/questions/583336/how-do-i-create-a-pdo-parameterized-query-with-a-like-statement-in-php/7357296#7357296 – Kzqai

risposta

4

Va bene. Non mi sembra un trucco per me.

Il difficulty viene fornito quando si desidera consentire un letterale % o _ nella stringa di ricerca, senza che debba fungere da jolly.

+0

Ho pensato che una grande parte dei parametri di binding era per PDO/SQL per sfuggire a cose come% o _ per te ... Quindi sono confuso. – RonLugge

+1

@RonLugge: PDO esegue l'escaping/parametrizzazione necessaria per ottenere stringhe letterali nel database. Il problema è che la sintassi del modello 'LIKE' è un livello separato, in aggiunta ai valori letterali stringa SQL. MySQL confonde il problema utilizzando lo stesso carattere di escape per entrambi i livelli, ma sono concettualmente non connessi, implementati a livelli completamente diversi. – bobince

Problemi correlati