Tylko przygotowane oświadczenia zapewniają automatyczną ucieczkę, zakładając, że nie masz włączonej brzydoty, takiej jak magiczne cudzysłowy. I tylko dane w params są zmieniane, a nie wszystko, co jest już w ciągu SQL, kiedy przygotowujesz instrukcję.
Jeśli chcesz skorzystać z funkcji automatycznego ucieczki, musisz przygotować zestawienie i podać je oddzielnie.
$sth = $dbh->prepare("SELECT * FROM users WHERE username=? AND password=?");
$sth->execute(array($username, $password));
W przeciwnym razie uzyskasz niewielką lub żadną ochronę przed mysqli_query
i przyjaciele. (Odmawiam nawet wspominania mysql_query
, ponieważ nie używa go już żaden szanujący się programista PHP. Och, czekaj... cholera. Cóż, to jedyna wzmianka, o której tutaj chodzi.)