Beter leren zoeken in een MySQL database, hoe?

Status
Niet open voor verdere reacties.

Elsnorry

Gebruiker
Lid geworden
12 okt 2012
Berichten
42
Ik kan met één inputveld zoeken in een MySQL database met de SQL LIKE operator zoals bv. onderstaande query:

Code:
$query = "SELECT * FROM user WHERE firstname LIKE '%$search%'";

Nu vraag ik me af hoe bv. een zoekertjeswebsite of een immowebsite die een grote database en veel bezoekers hebben en waar je meerdere zoekcriteria tegelijk kan ingeven in meerdere input en select veldjes ook met de SQL LIKE operator werken?
Werkt dit wel snel en nauwkeurig genoeg als je veel databaserecords hebt en veel gebruikers die vele queries tegelijk uitvoeren?

Zo niet, hoe moet het dan wel vraag ik me af? En hoe kan je zoeken met meer dan één inputveldje en meerdere select dropdowns?
Heb vlug een voorbeeld gemaakt van een search die ik werkende wil hebben: http://codepen.io/anon/pen/zvGKoY

Eventueel iemand een goede uitleg, tutorial of website hiervoor zodat ik het kan leren?
 
Je kan met if-statement je query dynamisch maken.
 
Had er niet meer aan gedacht dat ik dit topic had aangemaakt, mijn excuses.

@PHP4U bedankt, hier had ik al aan gedacht maar nu zit ik nog met volgende vraag: "Werkt de SQL LIKE operator wel snel en nauwkeurig genoeg als je veel databaserecords hebt en veel gebruikers die vele queries tegelijk uitvoeren?"
Ik heb is ergens gelezen dat er betere manieren zijn om te zoeken maar weet niet meer waar.
 
de like kan gevaarlijk zijn voor injectie
dus prepared statement

nu stel dat je de eerste letter toevoegd in je prepared statement

$query = "SELECT * FROM user WHERE firstname LIKE :tofind";
$tofind = 'A$search%':
$tofind = 'B$search%':
$tofind = 'C$search%':

PHP:
$dbSql = "SELECT enkel_nuttige_info_als_de_tabel_teveel_kollomen_heeft FROM user `tablename` WHERE LIKE :tofind";
$dbStmt = $database->prepare($dbSql);
$dbStmt->bindValue(':locale',$this->locale,PDO::PARAM_STR);
 
LIKE is niet in het algemeen gevaarlijk. Elke vorm van GET/POST/COOKIE/ENV waardes kunnen voor een query schadelijk zijn. Escaping is altijd nodig, trnzij je prepared statements gebruikt.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan