Okay, so it doesn't do what you want it to, but what does it do? Are you getting an error, or seeing some other unexpected behavior?
You might want to check php.net's documentation on handling file uploads.
Also, I noticed an unrelated problem with your code:
$_REQUEST[id]
String literals should be quoted. Example:
$my_string = 'Here is some text to put inside this string';
In other words, your code should read:
$_REQUEST['id']
Your code works the way it is, but only by accident. id (with no quotes) refers to a constant named "id". However, no such constant is defined - and when PHP encounters a reference to an undefined constant, it just evaluates it as a string containing the name of the (nonexistent) constant. So, your code does exactly what you wanted it to, but only through lucky coincidence 🙂 If you later define() a constant named "id", your code will break.
Even if you never use constants, it's probably not a good idea to rely on this behavior. It might change in future versions of PHP, and it'll be confusing for other programmers working with your code. Just a tip...