PHP Connexion à MySQL


PHP 5 et les versions ultérieures peuvent interagir avec une base de données MySQL en utilisant :

  • L'extension MySQLi (le "i" signifie amélioré)
  • PDO (PHP Data Objects)

Les versions antérieures de PHP utilisaient l'extension MySQL, qui a été dépréciée en 2012.


Dois-je utiliser MySQLi ou PDO ?

Si vous cherchez une réponse courte, ce serait "À votre convenance".

MySQLi et PDO ont tous deux leurs avantages :

PDO fonctionne avec 12 systèmes de bases de données différents, tandis que MySQLi ne fonctionne qu'avec des 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 l'intégralité du code, y compris les requêtes.

Les deux sont orientés objet, mais MySQLi propose également une API procédurale.

Les deux prennent en charge les instructions préparées, qui protègent contre les injections SQL et sont essentielles pour la sécurité des applications web.


Exemples MySQL dans les syntaxes MySQLi et PDO

Dans ce chapitre et dans les chapitres suivants, nous démontrons trois façons de travailler avec PHP et MySQL :

  • MySQLi (orienté objet)
  • MySQLi (procédural)
  • PDO

Installation de MySQLi

Pour Linux et Windows : L'extension MySQLi est généralement installée automatiquement 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 de PDO

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 dans la base de données MySQL, nous devons nous connecter au serveur :

Exemple (MySQLi orienté objet)

<?php
$servername = "localhost";
$username = "username";
$password = "password";

// Créer une connexion
$conn = new mysqli($servername, $username, $password);

// Vérifier la connexion
if ($conn->connect_error) {
die("Échec de la connexion : " . $conn->connect_error);
}
echo "Connecté avec succès";
?>

Remarque sur l'exemple orienté objet ci-dessus :

$connect_error était défectueux jusqu'à PHP 5.2.9 et 5.3.0. Si vous devez garantir la compatibilité avec les versions de PHP antérieures à 5.2.9 et 5.3.0, utilisez le code suivant à la place :

// Vérifier la connexion
if (mysqli_connect_error()) {
die("Échec de la connexion à la base de données : " . mysqli_connect_error());
}

Exemple (MySQLi procédural)

<?php
$servername = "localhost";
$username = "username";
$password = "password";

// Créer une connexion
$conn = mysqli_connect($servername, $username, $password);

// Vérifier la connexion
if (!$conn) {
die("Échec de la connexion : " . mysqli_connect_error());
}
echo "Connecté avec succès";
?>

Exemple (PDO)

<?php
$servername = "localhost";
$username = "username";
$password = "password";

try {
$conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
// définir le mode d'erreur PDO sur exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connecté avec succès";
} catch(PDOException $e) {
echo "Échec de la connexion : " . $e->getMessage();
}
?>

Remarque : Dans l'exemple PDO ci-dessus, nous avons également spécifié une base de données (myDB) . PDO nécessite une base de données valide à laquelle 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 dispose d'une classe d'exception pour gérer tout problème pouvant survenir dans nos requêtes de base de données. Si une exception est levée dans le bloc try{ }, le script cesse 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 cela, utilisez ce qui suit :

MySQLi orienté objet :

$conn->close();

MySQLi procédural :

mysqli_close($conn);

PDO :

$conn = null;