Det burde ikke være nødvendigt at gøre noget ved outputtet, da den ændring du foretager blot er "escaping" - det er der kun for at fortælle MySQL hvordan det skal læses korrekt.
Den nemmeste måde at finde ud af dette er dog med en test - hvis det ikke bliver hevet korrekt ud, skal du så blot gøre det modsatte inden du viser teksten.
En SQL injection er en måde hvorpå en bruger (uberettiget) kan køre sin egen SQL kode. Lad os sige du har en formular, der bruger følgende SQL til at kontrollere et login:
SELECT id FROM brugere WHERE brugernavn='brugernavn' AND kodeord='kodeord'
Hvis vi nu siger dit brugernavn er admin og dit kodeord er 123456, så vil den så bruge følgende SQL når du logger ind:
SELECT id FROM brugere WHERE brugernavn='admin' AND kodeord='123456'
Men hvad nu hvis jeg kommer forbi og logger ind med dit brugernavn, men med et andet kodeord - såsom whatever' OR '1'='1? Så vil den SQL der bliver brugt pludselig se sådan ud:
SELECT id FROM brugere WHERE brugernavn='admin' AND kodeord='whatever' OR '1'='1'
hvilket vil sige at jeg, hvis du ikke har kontrol over det der foregår, kan logge ind som dig uden at kende dit kodeord.
SQL injections kunne også benyttes til at slette data:
SELECT id FROM brugere WHERE brugernavn='whatever' AND kodeord=''; DROP TABLE brugere; --'
Ved at erstatte alle apostroffer med \' (den mere universelle måde) eller '' (mere MySQL-specifik), ved MySQL at strengen ikke slutter ved den apostrof, og vil derfor ikke melde fejl eller køre SQL den ikke skulle have kørt:
SELECT id FROM brugere WHERE brugernavn='admin' AND kodeord='whatever\' OR \'1\'=\'1'
Ret beset er der flere ting du bør sikre dig imod -
http://dk.php.net/manual/en/function.mysql-real-escape-string.php har en liste.