Zapytanie "statyczne" to takie, które pozostaje takie samo przez cały czas. Na przykład przycisk "Tagi" na Stackoverflow lub przycisk "7 dni" na Digg. W skrócie, zawsze mapują one do konkretnego zapytania bazy danych, dzięki czemu można je utworzyć w czasie projektowania.Tworzenie zapytań dynamicznych i bezpiecznych
Ale staram się dowiedzieć, jak wykonać "dynamiczne" zapytania, w których użytkownik w zasadzie dyktuje, w jaki sposób zapytanie bazy danych zostanie utworzone w środowisku wykonawczym. Na przykład w Stackoverflow możesz łączyć znaczniki i filtrować posty w wybrany sposób. To zapytanie dynamiczne, ale bardzo proste, ponieważ to, co można połączyć, znajduje się w świecie tagów. Bardziej skomplikowanym przykładem jest możliwość łączenia tagów i użytkowników.
Przede wszystkim, gdy masz zapytanie dynamiczne, brzmi to tak, jakby nie można było już używać api api, aby uniknąć iniekcji sql, ponieważ elementy zapytania będą zależeć od tego, co użytkownik zdecydował się uwzględnić w zapytaniu. Nie widzę, jak inaczej budować to zapytanie, niż przy użyciu dołączania ciągów.
Po drugie, zapytanie może potencjalnie obejmować wiele tabel. Na przykład, jeśli SO pozwala użytkownikom filtrować w oparciu o użytkowników i znaczniki, a te prawdopodobnie żyją w dwóch różnych tabelach, budowanie zapytania staje się nieco bardziej skomplikowane niż tylko dołączanie kolumn i klauzul WHERE.
Jak mogę wdrożyć coś takiego?
Aby zasugerować abstrahowanie: W jakim języku rozmawiasz z bazą danych? Z której bazy danych korzystasz? –
Twoja baza danych jest bardzo ważna. Które RDBMS? Po drugie, czy w ogóle chcesz ograniczyć. Czy chcesz powiedzieć, że możesz wyszukiwać tylko na 10 tagach ... 11 to verboten? –