PHPでの

sprintf("SELECT * FROM table WHERE id = %d", $value); sprintf("SELECT * FROM table WHERE id = %s", escape($value)); sprintf("SELECT * FROM table WHERE id = '%s'", escape($value));

の3つのコードについて、2行目のコードでSQLインジェクション脆弱性が生じ、1行目と3行目は問題がないのはどのような理由でしょうか