CodeIgniter 4 : Comment se connecter à une base de données ?

Accueil PHP 8 CodeIgniter 4 : Comment se connecter à une base de données ?

Si vous débutez avec CodeIgniter 4, l’un des premiers défis que vous rencontrerez est la connexion à une base de données. Cette étape est essentielle pour développer des applications web dynamiques qui interagissent avec des données stockées.

Dans ce tutoriel, nous allons voir comment configurer et tester une connexion à une base de données avec CodeIgniter 4, étape par étape.

Vérifier l’installation de CodeIgniter 4

Avant toute chose, assurez-vous que CodeIgniter 4 est bien installé sur votre machine. Si ce n’est pas encore fait, vous pouvez l’installer via Composer :

Configurer la connexion à la base de données

CodeIgniter utilise un fichier de configuration spécifique pour gérer la connexion à la base de données. Vous devez modifier le fichier .env à la racine du projet.

Activer le fichier .env

Par défaut, le fichier .env est inactif. Renommez env en .env (sans extension) pour l’activer.

Modifier les paramètres de connexion

Ouvrez le fichier .env avec un éditeur de texte et recherchez la section database. Modifiez les valeurs en fonction de votre base de données MySQL :

database.default.hostname = 127.0.0.1
database.default.database = nom_de_votre_bdd
database.default.username = root
database.default.password = root
database.default.DBDriver = MySQLi
database.default.port = 3306
database.default.charset = utf8mb4
database.default.DBCollate = utf8mb4_general_ci

🔹 Explication des paramètres :

  • hostname : Adresse du serveur de base de données (souvent 127.0.0.1 en local).
  • database : Nom de votre base de données.
  • username et password : Identifiants de connexion (par défaut root/root sous MAMP).
  • DBDriver : Le moteur de base de données utilisé (MySQLi est recommandé pour MySQL).
  • port : Port de connexion MySQL (3306 par défaut, 8889 sous MAMP).
  • charset : Encodage des caractères (utf8mb4 pour gérer tous les caractères, y compris les emojis).

💡 Attention : Si vous utilisez MAMP, le port MySQL est souvent 8889. Pensez à le modifier si nécessaire.

Voici un exemple pour vous connecter à votre base de données avec CodeIgniter 4 lorsqu’on utilise le serveur Mamp :

database.default.hostname = localhost
database.default.database = nom_de_la_bdd
database.default.username = root
database.default.password = root
database.default.DBDriver = MySQLi
database.default.DBPrefix =
database.default.port = 8889

Tester la connexion à la base de données

Créer un contrôleur de test

Dans le dossier app/Controllers/, créez un fichier DatabaseTest.php et ajoutez-y le code suivant :

<?php

namespace App\Controllers;

use CodeIgniter\Controller;
use Config\Database;

class DatabaseTest extends BaseController
{
    public function index()
    {
        // Connexion à la base de données
        try {
            $db = Database::connect();
            
            // Exécuter une requête simple pour vérifier la connexion
            $query = $db->query("SELECT 1");
            
            if ($query) {
                return "Connexion à la base de données réussie ! 🎉";
            } else {
                return "Échec de la connexion à la base de données. ❌";
            }
        } catch (\Exception $e) {
            return "Erreur de connexion : " . $e->getMessage();
        }    }
}

🔹 Que fait ce code ?

  • Il tente de se connecter à la base de données.
  • Il exécute une requête simple SELECT 1 pour vérifier que MySQL fonctionne.
  • Il affiche un message de succès ou une erreur détaillée en cas d’échec.

Accéder au test via le navigateur

Ajoutez la route suivante dans app/Config/Routes.php :

$routes->get('/test-db', 'DatabaseTest::index');

Puis, ouvrez votre navigateur et accédez à l’URL suivante :

http://localhost:8888/test-db

Si tout est bien configuré, vous verrez :

Connexion à la base de données réussie ! 🎉

Si un problème survient, vous verrez un message d’erreur détaillé.

Formation web et informatique - Alban Guillier - Formateur

Des formations informatique pour tous !

Débutant ou curieux ? Apprenez le développement web, le référencement, le webmarketing, la bureautique, à maîtriser vos appareils Apple et bien plus encore…

Formateur indépendant, professionnel du web depuis 2006, je vous accompagne pas à pas et en cours particulier, que vous soyez débutant ou que vous souhaitiez progresser. En visio, à votre rythme, et toujours avec pédagogie.

Découvrez mes formations Qui suis-je ?

Effectuer une première requête SQL

Maintenant que la connexion fonctionne, faisons une requête pour récupérer la première ligne d’une table. Imaginons que votre applications soit faites pour gérer vos étudiants. Nous allons afficher la première ligne de la table students.

Dans DatabaseTest.php, remplacez index() par :

public function index()
{
    try {
        $db = Database::connect();
        $query = $db->query("SELECT * FROM students LIMIT 1");
        $row = $query->getRow();

        if ($row) {
            return "<pre>" . print_r($row, true) . "</pre>";
        } else {
            return "Aucune donnée trouvée.";
        }
    } catch (\Exception $e) {
        return "Erreur : " . $e->getMessage();
    }
}

Accédez à http://localhost:8080/test-db et vous devriez voir les données du premier étudiant.

Utiliser le modèle CodeIgniter pour interagir avec la base

Pour une meilleure organisation, utilisez un Modèle au lieu d’exécuter des requêtes SQL directement dans le contrôleur.

Créer un modèle StudentModel.php

Dans app/Models/, créez un fichier StudentModel.php et ajoutez :

<?php

namespace App\Models;

use CodeIgniter\Model;

class StudentModel extends Model
{
    protected $table = 'students';
    protected $primaryKey = 'id';
    protected $allowedFields = ['first_name', 'age', 'city'];
}

Modifier le contrôleur pour utiliser le modèle

Dans DatabaseTest.php, ajoutez en haut :

use App\Models\StudentModel;

Puis, remplacez index() par :

public function index()
{
    $studentModel = new StudentModel();
    $student = $studentModel->first(); // Récupère le premier étudiant

    if ($student) {
        return "<pre>" . print_r($student, true) . "</pre>";
    } else {
        return "Aucun étudiant trouvé.";
    }
}

Ainsi, CodeIgniter génère la requête SQL automatiquement ! ✅

base de données CodeIgniter 4

Conclusion

Nous avons vu comment se connecter à une base de données avec CodeIgniter 4, tester la connexion et effectuer une première requête SQL avec et sans modèle.

Résumé des étapes :

✔️ Configurer .env avec les bonnes informations
✔️ Tester la connexion avec un contrôleur
✔️ Effectuer une requête SQL
✔️ Utiliser un modèle pour une meilleure gestion

Avec ces bases, vous êtes prêt à interagir avec une base de données dans CodeIgniter 4 !

Apprenez également à créer une page avec CodeIgniter 4.

Live on Twitch
  • 🔥 Vendredi 25 Avril 2025 >19h00

    HTML & SémantiqueStructure d'une page HTML