Well, more or less, except for not using a salt. For example md5($salt.$password). The salt should be individual for each user.
The reason is that if someone gets access to the db and the stored passwords, without a salt they could use a precomputed hash table called a rainbow table, containing hasshes for common passwords, dictionary words, letter combinations. This would, without a salt, give an immediate reverse lookup for bad passwords, which is what users tend to use.
If you store each individual salt in the db along with the password (i.e: user(id, name, hashed password, salt)) and someone breaks into your database and get this information, at least they will now have to generate their rainbow table using your salt and password. Besides, they'd have to guess is you use md5(salt + password)), md5(password + salt), md5(md5(password) + salt)... Where guess would mean try them one after the other => takes a lot longer time.
Should you also add a pepper, which is used as a salt but is the same for all users and stored in your code instead, the attacker would need access to both db and code, since you'd now use something like md5($salt . $pasword . $pepper).
But the use of a pepper should only matter if someone can gain access to the database information through sql injection, which they shouldn't if you use prepared statements. Since you don't, this is the very first thing you should look into, which means stop using the deprecated and soon to be dead mysql extension and start using mysqli which was meant to replace mysql years ago. Or use PDO.