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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
    '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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
    "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.

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Inleiding
  2. Variabelen buiten quotes
  3. Het verschil
  4. Quotes in html
  5. Quotes in php
  6. Uitzondering 1 - mysql
  7. Uitzondering 2 - escaped characters
  8. Nawoord

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.