Position actuelle: Accueil> Derniers articles> Comment utiliser correctement la fonction MySQLI :: STMT_INIT pour les opérations de base de données dans l'architecture MVC?

Comment utiliser correctement la fonction MySQLI :: STMT_INIT pour les opérations de base de données dans l'architecture MVC?

M66 2025-06-02

Dans PHP, MySQLI :: STMT_INIT est une fonction dans l'extension MySQLI , qui est principalement utilisée pour initialiser un nouvel objet MySQLI_STMT . Ceci est très important pour exécuter des déclarations préparées. En utilisant des instructions de prétraitement, nous pouvons éviter les problèmes de sécurité tels que l'injection SQL et améliorer l'efficacité des requêtes de base de données.

2. Opérations de la base de données en architecture MVC

Dans les architectures MVC, les opérations de base de données sont généralement situées dans la couche modèle. Le modèle est responsable du traitement de l'acquisition et du stockage des données, tandis que la couche de contrôleur est responsable du traitement des demandes des utilisateurs et de l'appel des méthodes de modèle correspondantes. Dans notre cas, nous utiliserons MySQLI :: STMT_INIT pour les opérations de base de données dans la couche modèle.

3. Étapes de mise en œuvre

Supposons que nous ayons un système de gestion des utilisateurs simple où nous voulons insérer des informations utilisateur dans la base de données. Notre structure de table de base de données est la suivante:

 CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(255) NOT NULL,
    email VARCHAR(255) NOT NULL
);

Nous créerons une méthode sur la couche de modèle pour gérer le fonctionnement de l'insertion des données utilisateur.

Étape 1: classe de connexion de la base de données (database.php)

Tout d'abord, nous devons créer une classe de connexion de base de données pour se connecter à la base de données. Supposons que nous stockons les informations de connexion de la base de données dans une classe distincte.

 class Database {
    private $host = 'localhost';
    private $username = 'root';
    private $password = '';
    private $database = 'test_db';
    public $conn;

    public function __construct() {
        $this->conn = new mysqli($this->host, $this->username, $this->password, $this->database);
        if ($this->conn->connect_error) {
            die("Connection failed: " . $this->conn->connect_error);
        }
    }
}
Étape 2: Créez une classe UserModel (UserModel.php)

Ensuite, nous créons une classe UserModel qui gère les opérations de base de données liées à l'utilisateur. Ici, nous utiliserons la fonction MySQLI :: STMT_INIT pour initialiser l'instruction de prétraitement et insérer les données utilisateur.

 class UserModel {
    private $db;

    public function __construct() {
        $this->db = new Database();
    }

    public function addUser($username, $email) {
        // Instruction de préparation d'initialisation
        $stmt = $this->db->conn->stmt_init();

        // Vérifiez si la déclaration de préparation est réussie
        if ($stmt->prepare("INSERT INTO users (username, email) VALUES (?, ?)")) {
            // Lier les paramètres
            $stmt->bind_param("ss", $username, $email);

            // Instruction d'exécution
            if ($stmt->execute()) {
                echo "User added successfully!";
            } else {
                echo "Error: " . $stmt->error;
            }

            // Déclaration étroite
            $stmt->close();
        } else {
            echo "Prepare failed: " . $this->db->conn->error;
        }
    }
}
Étape 3: appelle de couche de contrôleur (userController.php)

Dans la couche de contrôleur, nous effectuons des opérations de base de données en appelant la méthode de la classe UserModel . Nous prendrons les données entrées par l'utilisateur et la transmettrons à la méthode AddUser .

 class UserController {
    private $model;

    public function __construct() {
        $this->model = new UserModel();
    }

    public function createUser($username, $email) {
        // Appel UserModel Méthodes d'insertion de classe Données utilisateur
        $this->model->addUser($username, $email);
    }
}
Étape 4: La page frontale interagit avec les utilisateurs

Enfin, dans la page frontale, nous fournissons un formulaire simple aux utilisateurs pour saisir des données. Les données de formulaire seront soumises au modèle via la couche de contrôleur pour les opérations de base de données.

 <form method="POST" action="create_user.php">
    <label for="username">Username:</label>
    <input type="text" id="username" name="username" required>
    
    <label for="email">Email:</label>
    <input type="email" id="email" name="email" required>
    
    <button type="submit">Create User</button>
</form>

Dans le fichier create_user.php , nous créons l'utilisateur via le contrôleur:

 include 'UserController.php';

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $username = $_POST['username'];
    $email = $_POST['email'];

    $controller = new UserController();
    $controller->createUser($username, $email);
}

4. Résumé

Dans l'architecture MVC, l'utilisation correcte de la fonction MySQLI :: STMT_INIT pour les opérations de base de données peut améliorer la sécurité et l'efficacité du code. En utilisant des instructions de prétraitement, le risque d'injection SQL est évité et le code est plus clair et plus facile à entretenir. Dans cet exemple, nous encapsulons les opérations de la base de données dans la couche de modèle, et la couche de contrôleur est responsable de l'interaction avec le frontal, assurant la séparation des responsabilités de chaque couche.

De cette façon, vous pouvez gérer gracieusement les opérations de la base de données dans l'architecture MVC et fournir une bonne base pour l'expansion future.