SQL-инъекции: подстановка кода вместо пароля

Логин: skroob
Пароль: 12345′ OR ‘1’ = 1

Если исходный код SQL-таблицы  такой, то будут проблемы:

$username = $_POST["username"];
$password = $_POST["password"];
query("SELECT * FROM users WHERE username = $username AND password = $password");

// в итоге при подстановке логина и пароля получаем:
// query("SELECT * FROM users WHERE username = 'skroob' AND password = '12345' OR '1' = '1'");
// '1' = '1', поэтому вход будет произведен.

Правильный код:

$username = $_POST["username"];
$password = $_POST["password"];
query("SELECT * FROM users WHERE username = ? AND password = ?", $username, $password);

// в таком случае при подстановке пароля одинарные кавычки будут отделены дробью /'/