SQLインジェクション対策

SQLインジェクション対策に自分で作った /var/www/html 内のPHPファイルに記述する

<html>
 <head>
~
#一応パスワード入力欄は隠れるように <input type = "text"~ から <input type ="password"~ と変えた。
 <label for="password">パスワード</label><input type="password" id="password" name="password" value="">
~
 </body>
</html>
<?php
  session_start();

  $EMPTY = 0;

# PDOによるデータベースへの接続
$dsn = 'mysql:dbname=form;host=localhost';
$user = 'root';
$password = '';

try{

$dbh = new PDO($dsn, $user, $password);
print"接続に成功しました";
 }
#つながらなった時に発するエラー文
catch (PDOException $e){
      print('データベースへの接続に失敗しました:'.$e->getmessage());
#例外コード      
die();
}

  // ログインボタンが押された場合      
  if (isset($_POST["login"])) {
  $username = $_POST["username"];
  $userpass =  $_POST["password"];

#テーブル名 user_info から nameとpasswordをSELECT文で取得する。
$sql = "SELECT * FROM user_info where name = ? AND password =?";
#取得するというSQL命令をデータベースに対して送るという準備をする
$stmt = $dbh->prepare($sql);
#データーベースに命令を送信する
$result = $stmt->execute(array($username,$userpass));
#データーベースから取得した結果をまとめて連想配列で取得するため fetchALL(PDO::FETCH_ASSOC); で取得する
$result = $stmt->fetchALL(PDO::FETCH_ASSOC);
# $resultに空の配列があるかつまり全て正常にフェッチできたかどうかを確認するため!emptyで調べる。
  if (!empty($result)) {
    echo "ログイン成功";
    }
    else {
    echo "ログイン失敗";
    }
  }
?>