プリペアドステートメントの考え方は、変数を連結せず、代わりにパラメーターをバインドすることです。違いは、変数がSQLに挿入されることはなく、MySQLエンジンが変数を個別に処理するため、SQLインジェクションの可能性がなくなることです。これには、変数のエスケープや前処理が不要であるという追加のボーナスもあります。
$query = $db->prepare("SELECT password FROM login WHERE username = :username");
$query->execute(array(':username' => $username));