Kun forberedte udsagn giver automagisk escape, forudsat at du ikke har nogle grimmeligheder som magiske citater aktiveret. Og kun dataene i parametrene er escaped, ikke noget, der allerede er i SQL-strengen, når du forbereder sætningen.
Hvis du vil have fordelene ved automatisk escape, skal du udarbejde en erklæring og give den dataene separat.
$sth = $dbh->prepare("SELECT * FROM users WHERE username=? AND password=?");
$sth->execute(array($username, $password));
Ellers får du lidt eller ingen beskyttelse over mysqli_query
og venner. (Jeg nægter overhovedet at nævne mysql_query
, fordi ingen PHP-programmør med respekt for sig selv bruger det længere. Åh, vent... fanden. Nå, det er den eneste omtale, det bliver her.)