2011-12-01 11 views
5

cerco di usare PDO::quote per sfuggire una stringa in un'espressione LIKE, quindi la stringa utente non deve essere circondato come in:Come usare PDO :: quote senza stringhe circondate da virgolette?

LIKE "%userStringToEscape%" 

C'è un modo per farlo?

+0

Perché non basta prendere la '" 'fuori dalla dichiarazione E diciamo' % userStringToEscape% '" own "le virgolette? –

+0

Basta usare' substr ($ str, 1, -1) 'per questo? Sembra una cosa folle da fare però. –

+0

% sarà sfuggito dalla funzione penso - Questo è un po 'sporco per rimuovere preventivo come questo :) – Leto

risposta

5
$var = "%userStringToEscape%"; 
$var = $stmt->quote($var); 
$sql = "SELECT * FROM table WHERE field LIKE $var"; 

stesso vale per le dichiarazioni preparate

+5

Non ho risposto alla domanda. –

+0

Vai a rispondere in modo semplice, lol –

+0

La risposta alla domanda è "non puoi farlo (e non sembra esserci la necessità di - vedere la risposta di Shrapnel - a meno che non si concatenano più input" fuggiti "in uno string) ":) –

0

Usa substr($db->quote($var), 1, -1)

Davvero, però, non lo fanno. Finirai con problemi più grandi di quelli con cui hai iniziato.

La soluzione pulita per farlo è, naturalmente, $db->quote('%'.$var.'%')

+3

Ehi, non c'è bisogno di downvotare! Almeno è una risposta diretta alla domanda. Fai invece una domanda a faccia in giù ;-) –

+0

Non capisco le domande del tipo "In realtà non lo faccio". Se lo hai pubblicato, lo raccomandi davvero. Perché non prendere la decisione prima e scrivere una risposta che non contraddica con se stessa? –

+0

Bene, lo sostituirò con "Really though" –

Problemi correlati