Uitzondering 1 - mysql
Dan zijn er nog uitzondering, de eerste: een mysql-query in php. Omdat je alleen de quotes hoeft te escapen waarmee je begint, zou je in mysql continue aan het escapen zijn. In mysql ben je verplicht enkele quotes te gebruiken, dubbele komen niet voor. Het levert zelfs een hoop ongemak op als je dit met enkele quotes doet, zelfs grote fouten. (voor een tutorial over mysql-injectie, zie hier eentje van Roel van de Water)
We hebben de volgende query:
2
3
4
5
'SELECT naam, leeftijd
FROM leerlingen
WHERE naam = '' . mysql_real_escape_string($_POST['naam']) . ''';
?>
Dit levert een grote fout op! Omdat we variabelen buiten qoutes halen, sluiten we de string af, en voegen met de . een variabele toe, en vervolgens openen we weer. Alleen hier krijgt naam een lege string, en gaat dit . mysql_real_escape_string($_POST['naam']) . ''' vervolgens verder als SQL commando’s. dat gaat niet werken. zo moet het wel:
2
3
4
5
"SELECT naam, leeftijd
FROM leerlingen
WHERE naam = '" . mysql_real_escape_string($_POST['naam']) . "'";
?>
Dit gaat wel werken, er worden andere quotes gebruikt dan de SQL syntax.
Nou, dat was dan mijn column over het gebruik van quotes. Onthoudt: je bent helemaal vrij om zelf te weten wat je doet, maar het is een sterke aanrader om dit zo te doen. Het verbetert de leesbaarheid, en er komen minder snel fouten in.
Inhoudsopgave
- Inleiding
- Variabelen buiten quotes
- Het verschil
- Quotes in html
- Quotes in php
- Uitzondering 1 - mysql
- Uitzondering 2 - escaped characters
- Nawoord