Introduction à PHP et MySQL
PHP et MySQL sont deux technologies incontournables du développement web, open-source et conçues pour fonctionner ensemble de façon optimale.
PHP et MySQL sont deux des technologies les plus populaires pour le développement web, et elles sont conçues pour fonctionner ensemble. PHP s'exécute sur le serveur et génère le HTML que voient vos visiteurs ; MySQL stocke les données dont ces pages ont besoin — utilisateurs, articles, commandes, commentaires. Presque tous les sites dynamiques que vous utilisez (un blog, un forum, une boutique en ligne) reposent sur cette combinaison ou une très similaire.
Cette page explique ce que fait chaque technologie, les deux façons dont PHP communique avec MySQL, ainsi qu'un flux de travail complet et fonctionnel : connexion, création d'une table, insertion de données et lecture de celles-ci. À la fin, vous saurez quels outils utiliser et où approfondir chaque opération.
Qu'est-ce que PHP ?
PHP signifie PHP: Hypertext Preprocessor et est un langage de script côté serveur. « Côté serveur » signifie que le code s'exécute sur le serveur web avant que quoi que ce soit ne soit envoyé au navigateur — le visiteur ne voit jamais le PHP, seulement le HTML qu'il produit. Parce que PHP peut lire les saisies utilisateur, communiquer avec une base de données et générer une page différente à chaque requête, il est utilisé pour les sites e-commerce, les forums, les blogs et toute application qui évolue en fonction des données.
Qu'est-ce que MySQL ?
MySQL est un système de gestion de base de données relationnelle (SGBDR). « Relationnel » signifie que les données vivent dans des tables composées de lignes et de colonnes — une table users, une table products — et que les tables peuvent se référencer mutuellement. PHP envoie des commandes à MySQL en utilisant SQL (Structured Query Language), le langage standard pour demander à une base de données de stocker ou de retourner des données. MySQL conserve les données en toute sécurité sur le disque entre les requêtes, de sorte que les informations saisies aujourd'hui sont toujours là la semaine prochaine.
Pourquoi utiliser PHP et MySQL ensemble ?
- Gratuit et open-source. Les deux sont librement utilisables et distribuables, ce qui vous permet de créer et d'héberger une application complète sans coût de licence.
- Évolutif. La même pile fait tourner un blog personnel ou un site à fort trafic — vous ajoutez des ressources à mesure que les données et le trafic augmentent.
- Facile à apprendre et bien documenté. PHP a une courbe d'apprentissage douce, MySQL est omniprésent, et l'immense communauté signifie que la plupart des problèmes que vous rencontrez ont déjà une réponse en ligne.
- Largement pris en charge. Presque tous les hébergeurs web proposent PHP et MySQL par défaut, et de grandes entreprises s'appuient sur cette combinaison en production.
Deux façons de se connecter : MySQLi vs. PDO
PHP est fourni avec deux extensions de base de données modernes. Vous devez en choisir une et vous y tenir pour un projet :
| MySQLi | PDO | |
|---|---|---|
| Fonctionne avec | MySQL uniquement | 12+ bases de données (MySQL, PostgreSQL, SQLite…) |
| Styles d'API | Procédural et orienté objet | Orienté objet uniquement |
| Instructions préparées | Oui | Oui |
| Idéal quand | Vous êtes sûr de n'utiliser que MySQL | Vous pourriez changer de base de données plus tard |
Évitez les anciennes fonctions
mysql_*que vous pouvez trouver dans de vieux tutoriels. Elles ont été supprimées dans PHP 7 et sont non sécurisées. Utilisez MySQLi ou PDO.
Les deux extensions prennent en charge les instructions préparées, qui constituent la fonctionnalité de sécurité la plus importante ici — elles empêchent les attaques par injection SQL. Consultez MySQL Prepared Statements pour l'explication complète.
Connexion à une base de données MySQL
Une connexion nécessite quatre éléments : l'hôte, un nom d'utilisateur, un mot de passe et le nom de la base de données. L'exemple ci-dessous utilise le style procédural MySQLi et vérifie les erreurs avant de continuer.
<?php
$host = 'localhost';
$user = 'username';
$password = 'password';
$dbname = 'database_name';
// Create connection
$conn = mysqli_connect($host, $user, $password, $dbname);
// Always check the connection before doing anything else
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>Pour le style MySQLi orienté objet, un exemple PDO complet et le dépannage des connexions, consultez Connecting PHP to MySQL et PHP MySQLi.
Le flux de travail typique
Une fois connecté, presque tout ce que vous faites avec une base de données est l'une des quatre opérations, souvent appelées CRUD — Create, Read, Update, Delete (Créer, Lire, Mettre à jour, Supprimer). Chacune correspond à une instruction SQL et possède son propre chapitre :
- Créer une table pour définir où vivent les données — voir Create a MySQL Table.
- Insérer des lignes de données — voir Insert Data into MySQL.
- Lire (sélectionner) les données — voir Select Data from MySQL.
- Mettre à jour les lignes existantes — voir Update Data in MySQL.
- Supprimer les lignes dont vous n'avez plus besoin — voir Delete Data in MySQL.
Vous affinez généralement les résultats avec une clause WHERE et les triez avec ORDER BY.
Un exemple complet en miniature
Ce script se connecte, crée une table users si elle n'existe pas, insère une ligne, puis relit toutes les données. Il utilise une instruction préparée pour l'insertion afin que les valeurs fournies par l'utilisateur ne puissent pas corrompre la requête.
<?php
$conn = mysqli_connect('localhost', 'username', 'password', 'database_name');
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
// 1. Create a table
mysqli_query($conn, "
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100)
)
");
// 2. Insert a row safely with a prepared statement
$stmt = mysqli_prepare($conn, "INSERT INTO users (name, email) VALUES (?, ?)");
mysqli_stmt_bind_param($stmt, "ss", $name, $email);
$name = "Ada Lovelace";
$email = "[email protected]";
mysqli_stmt_execute($stmt);
// 3. Read the data back
$result = mysqli_query($conn, "SELECT id, name, email FROM users");
while ($row = mysqli_fetch_assoc($result)) {
echo $row['id'] . ": " . $row['name'] . " (" . $row['email'] . ")\n";
}
mysqli_close($conn);
?>L'argument "ss" indique à MySQL que les deux valeurs liées sont des chaînes de caractères. Comme les valeurs sont liées séparément du texte SQL, un attaquant ne peut pas injecter de SQL malveillant via le champ name ou email.
Pièges courants
- Oublier de vérifier la connexion. Si les identifiants ou l'hôte sont incorrects, tous les appels suivants échouent silencieusement. Utilisez toujours
die()ou gérez l'erreur juste après la connexion. - Construire des requêtes par concaténation de chaînes. Placer directement des saisies utilisateur dans une chaîne SQL invite à l'injection SQL. Utilisez des instructions préparées à la place.
- Laisser les erreurs de base de données visibles aux utilisateurs. En production, journalisez les erreurs plutôt que d'afficher
mysqli_connect_error()sur la page — cela peut révéler des détails sur le serveur.
Conclusion
PHP et MySQL vous permettent de créer des sites web dynamiques et pilotés par les données avec des outils gratuits et bien pris en charge. Connectez-vous avec MySQLi ou PDO, utilisez toujours des instructions préparées pour les saisies utilisateur, et souvenez-vous que presque toutes les tâches de base de données ne sont que l'une des quatre opérations CRUD. À partir d'ici, suivez les liens du flux de travail ci-dessus pour approfondir chaque opération.