Mam taki pytanie czy jest jakaś funkcja, która sprawdza czy 5 ostatnich liter ciągu nie mają w sobie znaków takich jak " and " czy " or " ?
Bo mam sobie formularz, i tam są pola tekstowe do wypełnienia oczywiście można wypełnić wszystkie, a można żadnego nie wypełniać i teraz jak ktoś wpisze w dane pole jaką wartość to w zapytaniu tworzy się wartość
$zapytanie .= " pole1 < wartosc"
$zapytanie .= " and pole2 < wartosc"
I teraz przykładowo jak użytkownik nie będzie wypełniał pola 1 to zmienna zapytanie będzie miała taką wartość select pole from tabela where and pole2 > wartosc i teraz mi chodzi o usunięcie tych zbędnych and i or.
Korzystaj z PDO i prepared statements. Teraz tylko prosisz się o SQL injection. Dlaczego 5 ostatnich liter? a jak ktoś CI poda 5 OR 10; SELECT * FROM users
jak parametr. Poszerzaj horyzont, gdy spotykasz się z jakimś problemem.
Czyli problem X/Y: powinieneś wykorzystać odpowiedni query builder
, a nie ręcznie składać zapytania.
Jeśli nie korzystasz z Query Builder w Laravel to jakbyś rezygnował z ochrony przed SQL Injection.
Popatrz w dokumentacje:
https://laravel.com/docs/5.5/queries#selects
Możesz sorbie zrobić coś takiego:
$query = DB::table('users')->select('name');
if(Input::has('nextFilter')){
$query->addSelect('nextFilter');
}
$result = $query->get();