Because many websites and research studies have proved that md5() can be reversed and you should stop using that !
In simple words....

You could very well make use of password_hash() in PHP 5.5 and also the crypt() those are the better ones considered so far.
A simple illustration of password_hash() taken from PHP Manual
<?php
$options = [
    'cost' => 12,
];
echo password_hash("rasmuslerdorf", PASSWORD_BCRYPT, $options)."\n";
?>
A simple illustration of crypt making using of the BLOWFISH algorithm
if (CRYPT_BLOWFISH == 1) {
    echo 'Blowfish:     ' . crypt('rasmuslerdorf', '$2a$07$usesomesillystringforsalt$') . "\n";
}
EDIT :
Why you should not use md5() ?
Hashing algorithms such as MD5, SHA1 and SHA256 are designed to be
  very fast and efficient. With modern techniques and computer
  equipment, it has become trivial to "brute force" the output of these
  algorithms, in order to determine the original input. Because of how
  quickly a modern computer can "reverse" these hashing algorithms, many
  security professionals strongly suggest against their use for password
  hashing.
Why go for password_hash() on PHP 5.5 ?
When hashing passwords, the two most important considerations are the
  computational expense, and the salt. The more computationally
  expensive the hashing algorithm, the longer it will take to brute
  force its output. PHP 5.5 provides a native password hashing API which is the password_hash() that
  safely handles both hashing and verifying passwords in a secure
  manner.
Source