Pourquoi ?
Selon la version de PHP utilisée, plusieurs extensions vous permettent de vous connecter à une base de données MySQL.
En PHP 5, vous pouviez choisir entre MySQL (dépréciée à partir de la version 5.5), MySQLi et PDO_MySQL.
A partir de PHP 7, seuls MySQLi et PDO_MySQL sont disponibles.
Pour la petite histoire et afin de vous permettre de briller devant la machine à café (ou juste passer pour un geek

Enfin, il s'agit d'une interface procédurale uniquement, elle n'est donc pas orientée objet, ce qui peut faire désordre quand vous voulez faire de la POO.
Il est donc recommandé pour vos nouveaux projets d'utiliser soit l'extension MySQLi, soit l'extension PDO_MySQL et pour vos anciens projets, de ne pas trop attendre pour les migrer afin d'éviter les mauvaises surprises lorsque votre hébergeur décidera de passer à PHP 7

De MySQL vers MySQLi
Il est important de noter que MySQL fonctionne uniquement en mode procédurale, tandis que MySQLi fonctionne avec une interface orientée objet. Si vous ne maîtrisez pas la programmation orientée objet ou voulez migrer rapidement, il est également possible d'utiliser cette extension en mode procédurale. Prenez garde cependant car les noms des méthodes et les arguments ne sont pas les mêmes dans ces deux modes.
Connexion
En général, la première chose que vous faites avec MySQL, c'est de vous connecter au serveur et de sélectionner une base de données avec mysql_connect() et mysql_select_db().
// Connexion MySQL
$connection = mysql_connect( 'host', 'username', 'password', new_link, client_flags);
$database = mysql_select_db( 'database', $link);
$connection est un identifiant de connexion MySQL et $database un simple booléen indiquant si la connexion a la base de données à aboutie ou non. MySQLi propose deux méthodes équivalentes mysqli_connect() et mysqli_select_db(). Il est cependant possible d'utiliser uniquement mysqli_connect() et de spécifier directement le nom de la base de données dès la connexion :
// Connexion MySQLi
$connection = mysqli_connect( 'host', 'username', 'password', 'database', 'port', 'socket');
$connection est alors un objet qui représente la connexion au serveur MySQL. Vous pouvez également profiter de l'interface orientée objet de MySQLi. La connexion se fait alors en instanciant un nouvel objet MySQLi :
$mysqli = new mysqli('host', 'username', 'password', 'database');
Si vous préférez continuer de spécifier le nom de la base de données indépendamment de la connexion, vous pouvez utiliser mysqli_select_db().
$database = mysqli_select_db($link, 'database');
ATTENTION : les paramètres sont inversés par rapport à mysql_select_db(), il ne suffit donc pas juste d'ajouter un "i" !Mettre à jour votre code php pour vous connecter à la base de données devrait donc être relativement simple

IMPORTANT : avec MySQL, vous n'étiez pas obligé de spécifier l'identifiant de connexion à chaque requête. En effet, l'identifiant de la dernière connexion ouverte était utilisé si aucun nouvel identifiant n'était spécifié. Avec MySQLi cet identifiant est obligatoire et doit être passé en premier dans vos appel procéduraux.
L'attribut new_link n'existe plus et doit désormais être géré via la création d'une nouvelle connexion si nécessaire.
Les constantes clients (client_flags) sont abandonnées avec MySQLi.
Si vous utilisiez une connexion permanente à MySQL avec mysql_pconnect() et souhaitez conserver cette persistance avec MySQLi, il vous faut simplement préfixer le nom de l'hôte par la valeur 'p:'. Ainsi au lieu de 'localhost' vous auriez 'p:localhost'.
Gestion des erreurs de connexion
En cas d'erreur lors de la connexion à la base de données, MySQL proposait les méthodes mysql_error() et mysql_errno().
Leurs équivalent MySQLi sont simplement mysqli_connect_error() et mysqli_connect_errno().
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* Vérification de la connexion */
if (mysqli_connect_errno()) {
echo "Echec de la connexion: " . mysqli_connect_error();
exit();
}
En mode orienté objet, ces informations sont accessibles via les attributs connect_error et connect_errno de votre instance MySQLi :
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* Vérification de la connexion */
if ($mysqli->connect_errno) {
echo "Echec de la connexion: " . $mysqli->connect_error;
exit();
}
Migration des méthodes MySQLLa majorité des méthodes MySQL ont une méthode procédurale équivalente en MySQLi et sont simples à migrer puisqu'il s'agit uniquement d'ajouter un "i" à mysql et d'ajouter ou déplacer l'identifiant de connexion en premier dans la liste des paramètres de la fonction. Pour les principales :
mysql_affected_rows -> mysqli_affected_rows($link) || $mysqli->affected_rows;
mysql_close -> mysqli_close($link) || mysqli::close()
mysql_data_seek -> mysqli_data_seek($result, $offset) || mysqli_result::data_seek($offset)
mysql_errno -> mysqli_errno($link) || $mysqli->errno
mysql_error -> mysqli_error($link) || $mysqli->error
mysql_fetch_array -> mysqli_fetch_array($result, $type) || mysqli_result::fetch_array($resulttype)
mysql_fetch_assoc -> mysqli_fetch_assoc($result) || mysqli_result::fetch_assoc()
mysql_fetch_lengths -> mysqli_fetch_lengths($result) || $mysqli_result->lengths
mysql_fetch_object -> mysqli_fetch_object($result, $class, $params) || mysqli_result::fetch_object($class, $params)
mysql_fetch_row -> mysqli_fetch_row($result) || mysqli_result::fetch_row()
mysql_field_seek -> mysqli_field_seek($result, $fieldnr) || mysqli_result::field_seek($fieldnr)
mysql_free_result -> mysqli_free_result($result) || mysqli_result::free_result()
mysql_insert_id -> mysqli_insert_id($link) || $mysqli->insert_id
mysql_num_rows -> mysqli_num_rows($result) || $mysqli_result->num_rows;
mysql_query -> mysqli_query($link, $query) || mysqli::query($query)
mysql_real_escape_string -> mysqli_real_escape_string($link, $str) || mysqli::real_escape_string($str)
mysql_select_db -> mysqli_select_db($link, $dbname) || mysqli::select_db($dbname)
mysql_set_charset -> mysqli_set_charset($link, $charset) || mysqli::set_charset($charset)
Nota : en mode orienté objet, les équivalents des méthodes procédurales peuvent être des attributs ou des méthodes. Celles-ci sont à appeler à partir des objets mysqli ou mysqli_result (résultat de la méthode query).D'autres méthodes sont en revanche un peu plus complexes à migrer, mais la plupart sont relativement peu utilisées, donc pas d'inquiétude et au pire, vous avez toujours la documentation officielle de php et les forums de phpfrance pour vous aider

De MySQL vers PDO
- Bientôt sur vos écrans -