Créer une base de données MySQL avec PHP
Apprenez à créer une base de données MySQL avec PHP : connexion au serveur, CREATE DATABASE et CREATE TABLE, avec exemples MySQLi complets.
Une base de données est le conteneur nommé qui regroupe vos tables, et chaque table stocke les données de votre application sous forme de lignes et de colonnes. Avant de pouvoir enregistrer des utilisateurs, des commandes ou des articles de blog, ce conteneur doit exister sur le serveur MySQL. Ce chapitre présente la séquence complète en PHP : se connecter au serveur, exécuter une instruction CREATE DATABASE, puis ajouter une table à l'intérieur.
Vous devez déjà avoir PHP et un serveur MySQL (ou MariaDB) installé et en cours d'exécution. Si l'étape de connexion échoue, consultez PHP Connect to MySQL et PHP MySQLi pour les détails de configuration.
Deux façons de communiquer avec MySQL
PHP est livré avec deux extensions modernes pour MySQL : MySQLi et PDO. Les deux sont sûres et prises en charge ; ce chapitre utilise MySQLi car elle est spécifique à MySQL et se lit simplement, mais le même SQL CREATE DATABASE fonctionne aussi via PDO. Utilisez PDO si vous envisagez de changer de moteur de base de données ultérieurement, et préférez les instructions préparées dès que des données saisies par l'utilisateur interviennent dans une requête.
Les anciennes fonctions mysql_* ont été supprimées dans PHP 7 — ne les utilisez pas.
Étape 1 — Se connecter au serveur MySQL
Pour créer une base de données, vous vous connectez au serveur, pas à une base de données spécifique (elle n'existe pas encore). Vous fournissez l'hôte, le nom d'utilisateur et le mot de passe, mais aucun nom de base de données :
<?php
$servername = "localhost";
$username = "root";
$password = "";
// Create connection (no database name — we're about to create one)
$conn = new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>new mysqli(...) retourne un objet de connexion. En cas de problème, $conn->connect_error contient le message, et die() arrête le script en l'affichant. Le nom d'utilisateur et le mot de passe ci-dessus sont des exemples — remplacez-les par vos propres identifiants.
Les trois étapes ci-dessous sont présentées sous forme d'extraits séparés pour plus de clarté. Dans un vrai projet, vous conserveriez le code de connexion dans un fichier distinct et l'importeriez avec require ou include.
Étape 2 — Créer la base de données
Une fois la connexion au serveur ouverte, exécutez une instruction CREATE DATABASE via $conn->query(). Pour une instruction qui ne retourne aucune ligne (comme CREATE, INSERT ou UPDATE), query() retourne TRUE en cas de succès et FALSE en cas d'échec :
<?php
// SQL to create a database named myDB
$sql = "CREATE DATABASE myDB";
if ($conn->query($sql) === TRUE) {
echo "Database created successfully";
} else {
echo "Error creating database: " . $conn->error;
}
$conn->close();
?>Conseil : utilisez CREATE DATABASE IF NOT EXISTS myDB pour éviter une erreur si la base de données existe déjà — pratique dans les scripts de configuration susceptibles de s'exécuter plusieurs fois.
Étape 3 — Créer une table dans la base de données
Une base de données seule est vide. Les données vivent dans des tables, que vous définissez avec CREATE TABLE — un nom de table suivi de ses colonnes et de leurs types de données. Cette fois, vous vous connectez avec le nom de la base de données (le quatrième argument) afin que la nouvelle table soit créée au bon endroit :
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "myDB";
// Connect, this time selecting the myDB database
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// SQL to create a table
$sql = "CREATE TABLE MyGuests (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";
if ($conn->query($sql) === TRUE) {
echo "Table MyGuests created successfully";
} else {
echo "Error creating table: " . $conn->error;
}
$conn->close();
?>Signification des définitions de colonnes :
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY— un entier unique généré automatiquement pour chaque ligne.UNSIGNEDsignifie pas de valeurs négatives ;PRIMARY KEYen fait l'identifiant de la ligne.VARCHAR(30)— texte de longueur variable jusqu'à 30 caractères.NOT NULL— la colonne doit toujours avoir une valeur.reg_date TIMESTAMP— défini à l'heure actuelle lors de l'insertion et mis à jour à chaque modification.
Remarque : l'ancienne syntaxe d'affichage de la largeur INT(6) est dépréciée depuis MySQL 8.0.17 et n'a jamais affecté le stockage ni la plage, donc le simple INT est préférable.
Erreurs courantes et comment les corriger
- "Access denied for user" — nom d'utilisateur ou mot de passe incorrect, ou l'utilisateur ne dispose pas du privilège
CREATE. Vérifiez vos identifiants et les droits accordés. - "Can't create database 'myDB'; database exists" — elle existe déjà. Supprimez-la d'abord, ou utilisez
CREATE DATABASE IF NOT EXISTS. $conn->errorest vide mais la requête a échoué — assurez-vous de comparer avec=== TRUE; unCREATEréussi retourne le booléentrue, pas un jeu de résultats.
Prochaines étapes
Une fois votre base de données et vos tables créées, les étapes suivantes consistent à y insérer des données et à les relire :
- Insert Data into MySQL — ajouter des lignes avec
INSERT INTO. - Select Data from MySQL — lire des lignes avec
SELECT. - MySQL Prepared Statements — la méthode sécurisée pour utiliser les données saisies par l'utilisateur dans les requêtes.
- Create a MySQL Table — un regard approfondi sur
CREATE TABLE.
Conclusion
Créer une base de données MySQL en PHP se résume à trois actions : ouvrir une connexion au serveur, exécuter CREATE DATABASE, puis se connecter à cette base de données et exécuter CREATE TABLE. Vérifier $conn->connect_error et la valeur de retour de query() à chaque étape transforme les échecs silencieux en messages clairs — l'habitude qui rend fiable le reste de votre couche de données.