Connexion PHP à MySQL
PHP 5 et versions ultérieures peuvent fonctionner avec une base de données MySQL en utilisant :
- Extension MySQLi (le "i" signifie amélioré)
- PDO (objets de données PHP)
Les versions antérieures de PHP utilisaient l'extension MySQL. Cependant, cette extension a été dépréciée en 2012.
Dois-je utiliser MySQLi ou PDO ?
Si vous avez besoin d'une réponse courte, ce serait "Tout ce que vous voulez".
MySQLi et PDO ont tous deux leurs avantages :
PDO fonctionnera sur 12 systèmes de bases de données différents, tandis que MySQLi ne fonctionnera qu'avec les bases de données MySQL.
Ainsi, si vous devez changer votre projet pour utiliser une autre base de données, PDO facilite le processus. Vous n'avez qu'à modifier la chaîne de connexion et quelques requêtes. Avec MySQLi, vous devrez réécrire tout le code - requêtes incluses.
Les deux sont orientés objet, mais MySQLi propose également une API procédurale.
Les deux prennent en charge les instructions préparées. Les instructions préparées protègent de l'injection SQL et sont très importantes pour la sécurité des applications Web.
Exemples MySQL dans la syntaxe MySQLi et PDO
Dans ce chapitre et dans les chapitres suivants, nous montrons trois manières de travailler avec PHP et MySQL :
- MySQLi (orienté objet)
- MySQLi (procédural)
- AOP
Installation de MySQLi
Pour Linux et Windows : l'extension MySQLi est automatiquement installée dans la plupart des cas, lorsque le package php5 mysql est installé.
Pour plus de détails sur l'installation, rendez-vous sur : http://php.net/manual/en/mysqli.installation.php
Installation AOP
Pour plus de détails sur l'installation, rendez-vous sur : http://php.net/manual/en/pdo.installation.php
Ouvrir une connexion à MySQL
Avant de pouvoir accéder aux données de la base de données MySQL, nous devons pouvoir nous connecter au serveur :
Exemple (MySQLi orienté objet)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
Remarque sur l'exemple orienté objet ci-dessus :
$connect_error était cassé jusqu'à PHP 5.2.9 et 5.3.0. Si vous devez vous assurer de la compatibilité avec les versions PHP antérieures à 5.2.9 et 5.3.0, utilisez plutôt le code suivant :
// Check connection
if (mysqli_connect_error()) {
die("Database connection failed: " . mysqli_connect_error());
}
Exemple (procédural MySQLi)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = mysqli_connect($servername, $username, $password);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>
Exemple (AOP)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
try {
$conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>
Remarque : Dans l'exemple de PDO ci-dessus, nous avons également spécifié une base de données (myDB) . PDO nécessite une base de données valide pour se connecter. Si aucune base de données n'est spécifiée, une exception est levée.
Astuce : Un grand avantage de PDO est qu'il a une classe d'exception pour gérer tous les problèmes qui peuvent survenir dans nos requêtes de base de données. Si une exception est levée dans le bloc try{ }, le script arrête de s'exécuter et passe directement au premier bloc catch(){ }.
Fermer la connexion
La connexion sera fermée automatiquement à la fin du script. Pour fermer la connexion avant, utilisez ce qui suit :
MySQLi orienté objet :
$conn->close();
Procédure MySQLi :
mysqli_close($conn);
AOP :
$conn = null;