So in other words, you want only ONE unique row for every "Position" value?
I would make a UNIQUE (or PRIMARY) key for the Position column, and then use the INSERT ... ON DUPLICATE KEY UPDATE syntax (here's a link to the MySQL manual for this syntax) like so:
$sql="INSERT INTO Director (Position, FirstName, MiddleName, LastName,
BirthDay, Height, Weight, Status, Hobbies, FavFood, FavDrink, FavMovie,
FavSports, SuperPower, Quote)
VALUES
('{$_POST['position']}','{$_POST['firstname']}','{$_POST['middlename']}','{$_POST['lastname']}',
'{$_POST['birthday']}','{$_POST['height']}','{$_POST['weight']}','{$_POST['status']}','{$_POST['hobbies']}',
'{$_POST['favfood']}','{$_POST['favdrink']}','{$_POST['favmovie']}','{$_POST['favsports']}',
'{$_POST['superpower']}','{$_POST['quote']}')
ON DUPLICATE KEY UPDATE `FirstName` = '{$_POST['firstname'], `MiddleName` = '{$_POST['middlename']}'";
// You'll have to finish the query, I only did the first 2 fields
EDIT: Also, here's an explanation of a couple of things I changed in your code..
Array indeces in your case should be strings. $row[name] does not have a string as an index, but a constant. PHP will detect this (assuming there actually isn't a constant named 'name') and throw an E_WARNING and then assume it is a string. So, use quotes: $row['name'].
Arrays, more specifically items in arrays referenced by indeces, should not simply appear inside a double-quoted string. If they do, they should be wrapped in braces ( {} ).