Endast förberedda uttalanden ger automagisk flykt, förutsatt att du inte har några fulheter som magiska citat aktiverade. Och bara data i parametrarna escapes, inte något som redan finns i SQL-strängen när du förbereder satsen.
Om du vill ha fördelarna med automatisk escape måste du förbereda ett uttalande och mata in data separat.
$sth = $dbh->prepare("SELECT * FROM users WHERE username=? AND password=?");
$sth->execute(array($username, $password));
Annars får du lite eller inget skydd över mysqli_query
och vänner. (Jag vägrar att ens nämna mysql_query
, eftersom ingen PHP-programmerare med självrespekt använder det längre. Åh, vänta...fan. Tja, det är det enda som nämns här.)