PHP/SQL: Gehele WHERE-clause vervangen door variabele
Ik ben een zoekfuntie aan het maken waarin uitgebreid gezocht kan worden op meerdere criteria, zoals leeftijd (van en tot), nationaliteit, geboorteplaats, enz.
Nu zou ik in PHP voor elke mogelijke combinatie van criteria een aparte sql-query kunnen maken, maar aangezien ik 5 criteria wil gebruiken levert die aanpak enorm veel queries op (namelijk een query voor: criteria 1, criteria 2, criteria 3, criteria 4, criteria 5, criteria 1 + 2, criteria 1 + 3, criteria 1 + 4, criteria 1 + 5, criteria 2 + 3, criteria 2 + 4, criteria 2 + 5, criteria 3 + 4, criteria 3 + 5 , criteria 4 + 5, enz.....)
Kortom: dat is geen doen.
Nu probeer ik dit op te lossen door mijn query dynamisch te maken door hele of gedeeltelijk WHERE-clauses te vergangen met een variable in php.
Bijvoorbeeld:
Standaard zoekquery (alles):
$sql = "SELECT id, achternaam, voornaam FROM tabelnaam";
Uitgebreide zoekquery (met criteria):
$query_toevoeging = "WHERE landID = '1' AND geboorteplaats = 'Den Haag'";
$sql = "SELECT id, achternaam, voornaam FROM tabelnaam '$query_toevoeging'";
Op die manier kan ik dan afhankelijk van de gekozen zoekcriteria de variabele '$query_toevoeging' aanpassen en deze steeds toevoegen aan dezelfde query.
Alleen bovenstaande aanpak werkt niet. Ik krijg dan geen resultaten meer. Dit terwijl bij de 'normale' uitvoering van de query ( sql = "SELECT id, achternaam, voornaam FROM tabelnaam WHERE landID = '1' AND geboorteplaats = 'Den Haag'"; ) ik wel resultaten krijg.
Kan mijn aanpak wel? En zo ja: wat doe ik fout? Zo nee, hoe moet het dan?
Gewijzigd op 12/09/2017 14:17:54 door Jo Immanuel
Geen idee hoe je die $query_toevoeging samenstelt, maar je moet wel op SQL-injectie letten.
Je zou ook iets kunnen doen van:
Perfect het werkt! Dank