2011-12-01 9 views
5

próbuję użyć PDO::quote uciec łańcuch znaków w wyrażeniu LIKE, więc ciąg użytkownik nie musi być otoczony jak w:Jak korzystać z PDO :: cytuj bez pobierania ciągu w cudzysłowie?

LIKE "%userStringToEscape%" 

Czy istnieje sposób to zrobić?

+0

Dlaczego po prostu nie wziąć '" 'z rachunku I niech' % userStringToEscape% '" właścicielem "cudzysłowów? –

+0

Po prostu użyj' substr ($ str, 1, -1) 'dla niego? Wydaje się jednak głupotą zrobić. –

+0

% zostanie uciec przez funkcję, którą myślę - To jest trochę brudne, by usunąć taki cytat :) – Leto

Odpowiedz

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

samo dotyczy sporządzanych sprawozdań

+5

Nie odpowiedział na pytanie. –

+0

Przejdź bezpośrednio, lol –

+0

Odpowiedź na pytanie brzmi: "nie możesz tego zrobić (i nie wydaje się, że potrzebujesz - patrz odpowiedź Szrapnela - chyba że łączysz wiele wejść" ucieczkowych "w jedno string) ":) –

0

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

Naprawdę jednak nie. Pojawią się większe problemy niż te, z którymi zacząłeś.

Czyste rozwiązaniem na to jest, oczywiście, $db->quote('%'.$var.'%')

+3

Hej, nie ma potrzeby, aby zgodzić! Przynajmniej jest to bezpośrednia odpowiedź na to pytanie. Zamiast tego zastanówmy się nad pytaniem ;-) –

+0

Nie rozumiem pytań typu "Właściwie nie". Jeśli ją opublikowałeś, to naprawdę ją polecasz. Dlaczego by nie zdecydować się najpierw i napisać odpowiedź, która nie jest sprzeczna z samym sobą? –

+0

Dobrze, zamienię to na "Naprawdę" –

Powiązane problemy