Ich bin ein String-Parameter empfängt, die Ich mag würde havingRaw verwenden mit:Laravel 5.1 Eloquent Escape-String-Parameter (havingraw)
Zeichenfolge Ich erhalte:
$searchString = Input::get('q');//example:party beach
i in andere Frage gefunden zu haben, i sollte diese sQL-Injection zu verhindern verwenden:
$searchStringEsc = DB::connection()->getPdo()->quote($searchString);
das Problem, das ich habe, ist, wenn ich in meiner Anfrage mit havingRaw einsetzen, da mein String entkommen ist jetzt `Partei Beach` es null zurück , aber wenn ich die nicht-maskierte Zeichenfolge einfüge, funktioniert es einwandfrei.
->havingRaw('search rlike replace("'.$searchStringEsc.'", " ", "|")')
Gibt es eine andere Möglichkeit, um unbearbeitete Parameter zu umgehen? danke
EDIT-- Voll Query (i eine Suchanfrage mache, wo der Benutzer in Stadtname, Name des Etablissements setzen, markiert alle Tags an die Einrichtung etc ...)
$results = DB::table('events')
->leftJoin('event_tag', 'events.id', '=', 'event_tag.event_id')
->join('tags', 'tags.id', '=', 'event_tag.tag_id')
->join('establishments', 'establishments.id', '=', 'events.establishment_id')
->join('cities', 'establishments.city_id', '=', 'cities.id')
->leftJoin('artist_event', 'events.id', '=', 'artist_event.event_id')
->join('artists', 'artist_event.artist_id', '=', 'artists.id')
->leftJoin('event_music', 'events.id', '=', 'event_music.event_id')
->join('musics', 'musics.id', '=', 'event_music.music_id')
->select('events.id as evId', 'events.slug as evSlug', 'events.name as evName',
'events.cover_path as estPath','establishments.establishment_type_id as estType',
'establishments.name as estName', 'events.start_date as evStart', 'events.end_date as evEnd',
'cities.name as ciName',
DB::raw('CONCAT_WS(",",
GROUP_CONCAT(distinct tags.name),
GROUP_CONCAT(distinct artists.name),
GROUP_CONCAT(distinct cities.name),
GROUP_CONCAT(distinct events.name),
GROUP_CONCAT(distinct musics.name)
) as search'))
->where('events.end_date','>=', DB::raw('NOW()'))
->where('establishments.is_active','=',1)
->groupBy('events.id')
->havingRaw('search rlike replace("'.$searchString.'", " ", "|")')
->orderBy('events.total_visited', 'desc')
->take(5)->get();
wenn Ich lasse es als $ searchString (unscaped String), es funktioniert gut. , wenn ich es auf $ searchStringEsc (Escape-Sequenzen) ändern zurückgeben null
ist es mitRoh oder whileRaw ?? –
hasingRaw, weil ich einen Alias in meiner Select-Abfrage verwende – Carlos
Können Sie die vollständige Abfrage posten? Verwenden Sie Aggregationsfunktionen? – alariva