Créer une connexion PHP et MySQL
Apprenez à établir une connexion entre PHP et MySQL pour créer des applications web dynamiques, avec mysqli et PDO.
Établir une connexion entre PHP et MySQL est indispensable pour créer des applications web dynamiques. Grâce à cette connexion, vous pouvez accéder aux données stockées dans une base de données MySQL et les manipuler via des scripts PHP. Cet article vous guide à travers toutes les méthodes de connexion, vous indique quand utiliser chacune d'elles et présente les bonnes pratiques pour sécuriser votre application.
Cette page couvre :
- Les trois API de connexion que PHP propose et comment choisir la bonne
- La connexion avec le style procédural
mysqliet la vérification des erreurs - Le style orienté objet
mysqliet le style moderne PDO - La sélection d'une base de données, l'exécution d'une première requête et la fermeture de la connexion
- Les pièges courants : jeux de caractères, rapport d'erreurs et gestion des identifiants
Prérequis
Avant de plonger dans la création de la connexion, il est important de s'assurer que les prérequis suivants sont en place :
- Un serveur web avec PHP installé (tel qu'Apache ou Nginx)
- Une base de données MySQL
- L'extension PHP MySQL (incluse dans la plupart des installations PHP)
Comprendre la connexion PHP et MySQL
Une connexion PHP et MySQL implique deux composants principaux : PHP et une base de données MySQL. PHP est un langage de script côté serveur utilisé pour créer des pages web dynamiques, tandis qu'une base de données MySQL sert à stocker et récupérer des données.
PHP vous offre trois façons de communiquer avec MySQL. Comprendre la différence dès le départ vous évitera de réécrire votre code plus tard :
| API | Style | Instructions préparées | Fonctionne avec d'autres bases de données |
|---|---|---|---|
mysqli (procédural) | Appels de fonctions comme mysqli_connect() | Oui | MySQL/MariaDB uniquement |
mysqli (orienté objet) | Méthodes sur un objet mysqli | Oui | MySQL/MariaDB uniquement |
| PDO | Méthodes sur un objet PDO | Oui | Nombreuses bases de données (une seule API) |
Les anciennes fonctions mysql_* (sans le i) ont été supprimées en PHP 7 — ne les utilisez jamais. Pour les nouveaux projets, préférez PDO ou mysqli orienté objet car ils prennent en charge les instructions préparées de manière propre, ce qui constitue votre principale défense contre les injections SQL. Cette page présente les trois afin que vous puissiez lire et maintenir n'importe quelle base de code. Pour une analyse plus approfondie de l'extension mysqli, voir PHP MySQLi.
Établir une connexion
Pour établir une connexion entre PHP et MySQL, vous devez utiliser la fonction mysqli_connect(). Cette fonction accepte plusieurs paramètres, notamment le nom du serveur, le nom d'utilisateur et le mot de passe.
Voici un exemple d'utilisation de la fonction mysqli_connect() :
Exemple PHP d'utilisation de la fonction mysqli_connect
<?php
$server = "localhost";
$username = "your_username";
$password = "your_password";
// Establish connection
$conn = mysqli_connect($server, $username, $password);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>Dans l'exemple ci-dessus, $server est défini sur localhost, qui est l'emplacement par défaut du serveur MySQL. $username et $password doivent être définis sur le nom d'utilisateur et le mot de passe utilisés pour accéder à la base de données.
Après avoir établi la connexion, nous utilisons la fonction mysqli_connect_error() pour vérifier si la connexion a réussi. Si la connexion échoue, le script affiche un message d'erreur et termine la connexion. Si la connexion est réussie, le script affiche « Connected successfully ».
Conseil : Vous pouvez également passer le nom de la base de données comme quatrième paramètre à
mysqli_connect()pour simplifier la logique de connexion et éviter une étape de sélection de base de données séparée :$conn = mysqli_connect($server, $username, $password, "your_database");
mysqli orienté objet
La même connexion en style orienté objet crée un objet mysqli avec new. De nombreux développeurs trouvent cette approche plus lisible car la connexion et ses méthodes sont regroupées sur un seul objet :
<?php
$conn = new mysqli("localhost", "your_username", "your_password", "your_database");
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>Connexion avec PDO
PDO (PHP Data Objects) vous offre une API cohérente pour de nombreuses bases de données. Les détails de connexion sont placés dans une chaîne DSN (Data Source Name) :
<?php
$dsn = "mysql:host=localhost;dbname=your_database;charset=utf8mb4";
try {
$pdo = new PDO($dsn, "your_username", "your_password");
// Make PDO throw exceptions on error instead of failing silently
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
} catch (PDOException $e) {
die("Connection failed: " . $e->getMessage());
}
?>Définissez le jeu de caractères. Spécifiez toujours
charset=utf8mb4(PDO) ou appelez$conn->set_charset("utf8mb4")(mysqli). Sans cela, les caractères multi-octets et les emojis peuvent être stockés ou retournés incorrectement.
Sélectionner une base de données
Une fois que vous avez établi une connexion au serveur MySQL, vous devez sélectionner une base de données avec laquelle travailler. Vous pouvez le faire à l'aide de la fonction mysqli_select_db().
Voici un exemple d'utilisation de la fonction mysqli_select_db() :
Exemple PHP d'utilisation de la fonction mysqli_select_db
<?php
$server = "localhost";
$username = "your_username";
$password = "your_password";
$db = "your_database";
// Establish connection
$conn = mysqli_connect($server, $username, $password);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
// Select database
$select_db = mysqli_select_db($conn, $db);
// Check database selection
if (!$select_db) {
die("Error selecting database: " . mysqli_error($conn));
}
echo "Database selected successfully";
?>Dans l'exemple ci-dessus, $db est défini sur le nom de la base de données que vous souhaitez sélectionner. Après avoir établi la connexion, nous utilisons la fonction mysqli_select_db() pour sélectionner la base de données. La fonction prend deux paramètres : la connexion et le nom de la base de données.
Nous utilisons ensuite la fonction mysqli_error() pour vérifier si la base de données a été sélectionnée avec succès. Si la sélection échoue, le script affiche un message d'erreur et termine la connexion. Si la sélection réussit, le script affiche « Database selected successfully ».
Exécuter votre première requête
Une connexion n'est utile qu'une fois qu'une requête est exécutée. L'exemple ci-dessous sélectionne des lignes dans une table users et parcourt les résultats. Comme la valeur provient d'une variable, il utilise une instruction préparée afin que l'entrée utilisateur ne puisse jamais être injectée dans le SQL :
<?php
$conn = new mysqli("localhost", "your_username", "your_password", "your_database");
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// Prepare a parameterized query
$stmt = $conn->prepare("SELECT id, name FROM users WHERE id > ?");
$stmt->bind_param("i", $minId); // "i" = integer parameter
$minId = 0;
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
echo $row["id"] . ": " . $row["name"] . "\n";
}
$stmt->close();
$conn->close();
?>Ne construisez jamais de requêtes en concaténant des données utilisateur brutes dans la chaîne SQL — cela ouvre la porte aux injections SQL. Pour approfondir la liaison de paramètres, voir MySQL Prepared Statements. Pour le jeu complet d'opérations CRUD, voir Insert Data et Select Data.
Fermer la connexion
Lorsque vous avez terminé de travailler avec une base de données MySQL, il est important de fermer la connexion. Cela permet de libérer des ressources et d'éviter des problèmes de sécurité potentiels.
Pour fermer la connexion, vous pouvez utiliser la fonction mysqli_close(). Voici un exemple d'utilisation de la fonction mysqli_close() :
Exemple PHP d'utilisation de la fonction mysqli_close
<?php
$server = "localhost";
$username = "your_username";
$password = "your_password";
$db = "your_database";
// Establish connection
$conn = mysqli_connect($server, $username, $password);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
// Select database
$select_db = mysqli_select_db($conn, $db);
// Check database selection
if (!$select_db) {
die("Error selecting database: " . mysqli_error($conn));
}
// Close connection
mysqli_close($conn);
echo "Connection closed";
?>Dans l'exemple ci-dessus, nous utilisons la fonction mysqli_close() pour fermer la connexion. La fonction prend un seul paramètre : la connexion. Le script affiche ensuite « Connection closed » pour confirmer que la connexion a été fermée.
Note de sécurité : Dans les environnements de production, évitez de coder en dur les identifiants. Utilisez des variables d'environnement ou des fichiers de configuration pour stocker les données sensibles.
Conclusion
Dans cet article, nous avons couvert les prérequis, les trois API de connexion (mysqli procédural, mysqli orienté objet et PDO), l'établissement d'une connexion, la sélection d'une base de données, l'exécution d'une requête paramétrée sécurisée et la fermeture de la connexion. Vous devriez maintenant être capable de connecter PHP à MySQL et de commencer à effectuer des opérations CRUD.
Pour les applications PHP modernes, préférez PDO ou l'interface mysqli orientée objet avec des instructions préparées : elles offrent une meilleure sécurité et une gestion des erreurs plus claire. Pour la suite, continuez avec Create a MySQL Database, Create a Table et la vue d'ensemble MySQL Database.