魔法の引用符のような醜さが有効になっていないと仮定すると、プリペアドステートメントのみが自動魔法のエスケープを提供します。また、パラメータのデータのみがエスケープされ、ステートメントを準備するときにSQL文字列にすでに含まれているものはエスケープされません。
自動エスケープのメリットが必要な場合は、ステートメントを準備して、データを個別にフィードする必要があります。
$sth = $dbh->prepare("SELECT * FROM users WHERE username=? AND password=?");
$sth->execute(array($username, $password));
そうしないと、mysqli_query
に対する保護がほとんどまたはまったく得られません。 と友達。 (私は言及することさえ拒否します mysql_query
、自尊心のあるPHPプログラマーはもうそれを使用していないからです。ああ、待って..くそー。ええと、それがここで得られる唯一の言及です。)