Хочу перенести сайт с mysql на PDO или mysqli прочитал много статей хочу внести ясность по некоторым пунктам?
Может ли такой вид обезопасить сайт от иньекций?
За код первых запросов хакеры вам скажут спасибо, им софт уже найдет уязвимость.
Последний запрос такой же уязвимый, т.к. вы напрямую берете данные из массива.
Ошибки:Вы не проверяете значение, которое содержится в POST/SESSION (тип данных, пустая строка)Вы не проверяете регуляркой эти данныеВы не используете параметрические запросы
Для наглядности простой пример:function registration($link,$login,$password,$email) {
	$newlogin = preg_replace('%[^A-Za-zА-Яа-я0-9]%', '', $login);
	$newpassword = preg_replace('%[^A-Za-zА-Яа-я0-9]%', '', $password);

	if($newlogin !=$login || $newpassword != $password) 
                return false;

		$pass = md5($newpassword);

		check_input_data($link,$login,$email); //Кидает ошибку, если логин уже есть в базе

		$stmt = mysqli_prepare($link, "INSERT INTO users (login,password) VALUES (?, ?)");
		mysqli_stmt_bind_param($stmt, 'ss', $newlogin, $pass);

		mysqli_stmt_execute($stmt);

		if(mysqli_stmt_affected_rows($stmt)==1) {
			$user_id = get_user_id($link,$newlogin);
//Что-то делаем
    } else {
      return false;
    }
      mysqli_stmt_close($stmt);

      return true;
}
PDO лучше только в плане универсальности (драйвера, а не вашей работы, это не ORM), mysqli как специализированный драйвер к примеру более производителен (несущественно). Защиту от sql инъекций вам дадут только подготовленные запросы, где вы их будете применять, в pdo или mysqli, без разницы.
Но все современные orm и просто обертки пишутся для PDO. Про mysqli забыли. Нативная работа с mysqli ужасна, т.к. очень устарела, эксепшены отсутствуют, да и порой просто не очень адекватна.