yt

dimanche 23 mars 2025

Pagination PDO

Créez une API REST PHP 8 CRUD simple avec MySQL et PHP PDO

Créez une API REST PHP 8 CRUD simple avec MySQL et PHP PDO

Il s'agit d'un didacticiel étape par étape sur l'API REST PHP 8 et MySQL. Dans ce didacticiel, je vais partager avec vous comment créer une API RESTful PHP 8 CRUD (Créer, Lire, Mettre à jour, Supprimer) avec une base de données MySQL. Si vous aspirez à acquérir une compréhension fondamentale des frameworks PHP, vous devez consulter notre tutoriel précédent dans lequel nous avons décrit comment créer une application Web PHP Laravel 6 CRUD avec MySQL. Ce tutoriel va expliquer comment créer une API REST CRUD simple en PHP et MySQL, tester l'API RESTful PHP avec Postmen et configurer un environnement de développement PHP sur votre système de développement local à partir de zéro. Table des matières API (interface de programmation d'application) Qu'est-ce que l'API REST ? Structure du fichier API REST PHP Configuration de la base de données MySQL Établir une connexion à la base de données MySQL Créer une classe PHP Récupérer les enregistrements de la table MySQL Obtenir une ligne unique de la base de données MySQL via l'API PHP Ajouter/Insérer un enregistrement unique Modifier/mettre à jour la table MySQL Supprimer/Supprimer un seul enregistrement MySQL Résumé Qu'est-ce que l'API (Application Programming Interface) ? API signifie « Application Programming Interface » (interface de programmation d'applications). Il s'agit d'un ensemble de routines, de protocoles et d'outils permettant de créer des applications logicielles. Une interface API permet la communication entre différents composants logiciels. Dans le développement de logiciels, l'API est une URL qui gère les données de l'application Web via des requêtes HTTP GET, POST, UPDATE et DELETE, et gère les opérations CRUD. Qu'est-ce que l'API REST ? Le transfert d'état représentationnel (REST) est un style d'architecture logicielle qui définit un ensemble de contraintes à utiliser pour la création de services Web. Les services Web conformes au style d'architecture REST, appelés services Web RESTful, assurent l'interopérabilité entre les systèmes informatiques sur Internet. Ces services permettent aux systèmes demandeurs d'accéder aux représentations textuelles des ressources Web et de les manipuler grâce à un ensemble uniforme et prédéfini d'opérations sans état. D'autres types de services Web, tels que les services Web SOAP, exposent leurs propres ensembles d'opérations arbitraires. Structure du fichier de projet de l'API PHP 8 Il s'agira de la structure de fichiers de notre projet PHP 8 REST API, nous avons créé des dossiers API , class et config pour stocker les fichiers de configuration liés à l'API et à la base de données MySQL. Structure du fichier de projet de l'API PHP Vous pouvez exécuter votre projet PHP via MAMP ou WAMP, mais nous utilisons l'outil de ligne de commande pour démarrer le projet PHP. Accédez au répertoire dans lequel vous avez localisé votre projet PHP. cd php-project-name Frapper Une fois que vous êtes dans le dossier du projet, exécutez la commande suivante pour démarrer l'application PHP. php -S 127.0.0.1:8080 Frapper La sortie suivante sera affichée sur l’écran de votre terminal. PHP 7.3.11 Development Server started at Thu May 7 13:21:35 2020 Listening on http://127.0.0.1:8080 Document root is /Users/digamber/Desktop/php-rest-api Frapper Vérifiez votre projet sur l'URL suivante : http://127.0.0.1:8080 Configuration de la base de données MySQL Avant de commencer, nous devons créer une phpapidb base de données, cela peut être fait via deux méthodes : soit vous pouvez utiliser PhpMyAdmin , soit vous pouvez le faire en accédant à l'utilisateur root MySQL via le terminal ou l'outil de ligne de commande pour créer la base de données. Nous avons rédigé un article détaillé sur l'installation et la configuration de MySQL dans l'application Terminal de Mac . Nous accédons à l'utilisateur root via la ligne de commande pour créer la base de données. mysql -u root -p Frapper Créer une nouvelle base de données MySQL. CREATE DATABASE phpapidb; Frapper Vérifiez la base de données. SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | phpapidb | | sys | +--------------------+ Frapper Utiliser la base de données. use phpapidb; Frapper Une fois la création de la base de données terminée, vous devez exécuter le script SQL pour créer la table. CREATE TABLE IF NOT EXISTS `Employee` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(256) NOT NULL, `email` varchar(50), `age` int(11) NOT NULL, `designation` varchar(255) NOT NULL, `created` datetime NOT NULL, PRIMARY KEY (`id`) )ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=19; Frapper Assurez-vous de la table que vous avez créée. SHOW tables; +--------------------+ | Tables_in_phpapidb | +--------------------+ | Employee | +--------------------+ Frapper Remplissez les données dans le `Employee` tableau. INSERT INTO `Employee` (`id`, `name`, `email`, `age`, `designation`, `created`) VALUES (1, 'John Doe', 'johndoe@gmail.com', 32, 'Data Scientist', '2012-06-01 02:12:30'), (2, 'David Costa', 'sam.mraz1996@yahoo.com', 29, 'Apparel Patternmaker', '2013-03-03 01:20:10'), (3, 'Todd Martell', 'liliane_hirt@gmail.com', 36, 'Accountant', '2014-09-20 03:10:25'), (4, 'Adela Marion', 'michael2004@yahoo.com', 42, 'Shipping Manager', '2015-04-11 04:11:12'), (5, 'Matthew Popp', 'krystel_wol7@gmail.com', 48, 'Chief Sustainability Officer', '2016-01-04 05:20:30'), (6, 'Alan Wallin', 'neva_gutman10@hotmail.com', 37, 'Chemical Technician', '2017-01-10 06:40:10'), (7, 'Joyce Hinze', 'davonte.maye@yahoo.com', 44, 'Transportation Planner', '2017-05-02 02:20:30'), (8, 'Donna Andrews', 'joesph.quitz@yahoo.com', 49, 'Wind Energy Engineer', '2018-01-04 05:15:35'), (9, 'Andrew Best', 'jeramie_roh@hotmail.com', 51, 'Geneticist', '2019-01-02 02:20:30'), (10, 'Joel Ogle', 'summer_shanah@hotmail.com', 45, 'Space Sciences Teacher', '2020-02-01 06:22:50'); Frapper Si vous utilisez PHP avec MySQL 8.0+, vous pourriez obtenir cette erreur : Le serveur a demandé une méthode d'authentification inconnue du client MySQL 8 utilise auth_socket comme plugin par défaut. Vos applications nécessitent donc une connexion à votre base de données avec un mot de passe. Vous devez vous connecter en tant que root à MySQL à l'aide du script SQL suivant. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; Frapper Vous devez 'password' le remplacer par votre mot de passe root. Si votre application n'est pas connectée à votre base de données avec l'utilisateur root, remplacez l'utilisateur dans la commande ci-dessus par l'utilisateur que votre application utilise. Établir une connexion à la base de données Le code suivant contient les informations de la base de données MySQL, telles que le nom de la base, le nom d'utilisateur et le mot de passe. Il établit la connexion à la base de données avec PHP via PDO. L'extension PHP Data Objects (PDO) propose une interface légère et cohérente pour accéder aux bases de données en PHP. Chaque pilote de base de données implémentant l'interface PDO peut exploiter des fonctionnalités spécifiques à la base de données sous forme de fonctions d'extension standard. Notez que l'extension PDO seule ne permet pas d'exécuter de fonctions de base de données ; vous devez utiliser un pilote PDO spécifique pour accéder à un serveur de base de données. Créez le config dossier à l'intérieur du projet API PHP, créez également le fichier database.php et placez le code suivant.

./config/database.php


  <\?php
    class Database {
        private $host = "127.0.0.1";
        private $database_name = "phpapidb";
        private $username = "root";
        private $password = "xxxxxxxx";

        public $conn;

        public function getConnection(){
            $this->conn = null;
            try{
                $this->conn = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->database_name, $this->username, $this->password);
                $this->conn->exec("set names utf8");
            }catch(PDOException $exception){
                echo "Database could not be connected: " . $exception->getMessage();
            }
            return $this->conn;
        }
    }  
?>

Créer une classe PHP Nous allons maintenant créer la classe PHP « Employé ». Ces classes PHP permettent d'exécuter de la programmation orientée objet en PHP. Elles encapsulent les valeurs de la table de la base de données. Nous allons définir les valeurs stockées sous forme de variables dans la table SQL. Les propriétés de la table SQL sont associées à la classe Connection qui est ajoutée via la classe constructeur. Chaque classe d'objet contient la méthode CRUD qui est exploitée via les fonctions PHP pour effectuer les opérations CREATE, READ, UPDATE et DELETE pour les lignes de table définies. Créez le fichier class/employees.php et définissez les méthodes CRUD à l'intérieur de la classe Employee. ./class/employees.php

<\?php
conn = $db;
        }

        // GET ALL
        public function getEmployees(){
            $sqlQuery = "SELECT id, name, email, age, designation, created FROM " . $this->db_table . "";
            $stmt = $this->conn->prepare($sqlQuery);
            $stmt->execute();
            return $stmt;
        }

        // CREATE
        public function createEmployee(){
            $sqlQuery = "INSERT INTO
                        ". $this->db_table ."
                    SET
                        name = :name, 
                        email = :email, 
                        age = :age, 
                        designation = :designation, 
                        created = :created";
        
            $stmt = $this->conn->prepare($sqlQuery);
        
            // sanitize
            $this->name=htmlspecialchars(strip_tags($this->name));
            $this->email=htmlspecialchars(strip_tags($this->email));
            $this->age=htmlspecialchars(strip_tags($this->age));
            $this->designation=htmlspecialchars(strip_tags($this->designation));
            $this->created=htmlspecialchars(strip_tags($this->created));
        
            // bind data
            $stmt->bindParam(":name", $this->name);
            $stmt->bindParam(":email", $this->email);
            $stmt->bindParam(":age", $this->age);
            $stmt->bindParam(":designation", $this->designation);
            $stmt->bindParam(":created", $this->created);
        
            if($stmt->execute()){
               return true;
            }
            return false;
        }

        // READ single
        public function getSingleEmployee(){
            $sqlQuery = "SELECT
                        id, 
                        name, 
                        email, 
                        age, 
                        designation, 
                        created
                      FROM
                        ". $this->db_table ."
                    WHERE 
                       id = ?
                    LIMIT 0,1";

            $stmt = $this->conn->prepare($sqlQuery);

            $stmt->bindParam(1, $this->id);

            $stmt->execute();

            $dataRow = $stmt->fetch(PDO::FETCH_ASSOC);
            
            $this->name = $dataRow['name'];
            $this->email = $dataRow['email'];
            $this->age = $dataRow['age'];
            $this->designation = $dataRow['designation'];
            $this->created = $dataRow['created'];
        }        

        // UPDATE
        public function updateEmployee(){
            $sqlQuery = "UPDATE
                        ". $this->db_table ."
                    SET
                        name = :name, 
                        email = :email, 
                        age = :age, 
                        designation = :designation, 
                        created = :created
                    WHERE 
                        id = :id";
        
            $stmt = $this->conn->prepare($sqlQuery);
        
            $this->name=htmlspecialchars(strip_tags($this->name));
            $this->email=htmlspecialchars(strip_tags($this->email));
            $this->age=htmlspecialchars(strip_tags($this->age));
            $this->designation=htmlspecialchars(strip_tags($this->designation));
            $this->created=htmlspecialchars(strip_tags($this->created));
            $this->id=htmlspecialchars(strip_tags($this->id));
        
            // bind data
            $stmt->bindParam(":name", $this->name);
            $stmt->bindParam(":email", $this->email);
            $stmt->bindParam(":age", $this->age);
            $stmt->bindParam(":designation", $this->designation);
            $stmt->bindParam(":created", $this->created);
            $stmt->bindParam(":id", $this->id);
        
            if($stmt->execute()){
               return true;
            }
            return false;
        }

        // DELETE
        function deleteEmployee(){
            $sqlQuery = "DELETE FROM " . $this->db_table . " WHERE id = ?";
            $stmt = $this->conn->prepare($sqlQuery);
        
            $this->id=htmlspecialchars(strip_tags($this->id));
        
            $stmt->bindParam(1, $this->id);
        
            if($stmt->execute()){
                return true;
            }
            return false;
        }

    }
?>

PHP La classe Employee gère l'opération CRUD __construct() — Rend la connexion à la base de données prête. getEmployees() — Obtenez tous les enregistrements. getSingleEmployee() — Obtenez des enregistrements uniques. createEmployee() — Créer un enregistrement. updateEmployee() — Mettre à jour l’enregistrement. deleteEmployee() — Récupérer un seul enregistrement. Récupérer les enregistrements de table MySQL à l'aide du point de terminaison de l'API REST PHP Le code suivant récupère tous les enregistrements de la table MySQL. Créez donc un fichier read.php dans le api dossier et placez-y le code suivant. read.php

  <\?php

    header("Access-Control-Allow-Origin: *");
    header("Content-Type: application/json; charset=UTF-8");
    
    include_once '../config/database.php';
    include_once '../class/employees.php';

    $database = new Database();
    $db = $database->getConnection();

    $items = new Employee($db);

    $stmt = $items->getEmployees();
    $itemCount = $stmt->rowCount();


    echo json_encode($itemCount);

    if($itemCount > 0){
        
        $employeeArr = array();
        $employeeArr["body"] = array();
        $employeeArr["itemCount"] = $itemCount;

        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
            extract($row);
            $e = array(
                "id" => $id,
                "name" => $name,
                "email" => $email,
                "age" => $age,
                "designation" => $designation,
                "created" => $created
            );

            array_push($employeeArr["body"], $e);
        }
        echo json_encode($employeeArr);
    }

    else{
        http_response_code(404);
        echo json_encode(
            array("message" => "No record found.")
        );
    }
?>

Testons le point de terminaison de l'API PHP à l'aide de Postman , ouvrons Postman et utilisons l'URL suivante et cliquez sur le bouton Envoyer pour vérifier la sortie. Méthode Point final OBTENIR http://localhost:8080/api/read.php Récupérer les enregistrements de table MySQL à l'aide du point de terminaison de l'API REST PHP Obtenir une ligne unique de la base de données MySQL via l'API PHP Le code suivant récupère une seule colonne de la table de la base de données MySQL. Créez un fichier single_read.php dans le api dossier et placez le code suivant. L'instruction SELECT est utilisée ici pour obtenir la colonne de la table, dans le code suivant, nous sélectionnons les valeurs Employee de la table MySQL. single_read.php


  <\?php
    header("Access-Control-Allow-Origin: *");
    header("Content-Type: application/json; charset=UTF-8");
    header("Access-Control-Allow-Methods: POST");
    header("Access-Control-Max-Age: 3600");
    header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");

    include_once '../config/database.php';
    include_once '../class/employees.php';

    $database = new Database();
    $db = $database->getConnection();

    $item = new Employee($db);

    $item->id = isset($_GET['id']) ? $_GET['id'] : die();
  
    $item->getSingleEmployee();

    if($item->name != null){
        // create array
        $emp_arr = array(
            "id" =>  $item->id,
            "name" => $item->name,
            "email" => $item->email,
            "age" => $item->age,
            "designation" => $item->designation,
            "created" => $item->created
        );
      
        http_response_code(200);
        echo json_encode($emp_arr);
    }
      
    else{
        http_response_code(404);
        echo json_encode("Employee not found.");
    }
?>

Méthode Point final OBTENIR localhost:8080/api/single_read.php/?id=2 Obtenir une ligne unique de la base de données MySQL via l'API PHP Insérer ou ajouter un enregistrement unique dans une table MySQL Dans cette étape, nous allons créer des points de terminaison d’API REST PHP pour insérer ou ajouter un seul enregistrement dans la table MySQL. Créez un fichier create.php dans le api dossier et ajoutez le code suivant. create.php


  <\?php
    header("Access-Control-Allow-Origin: *");
    header("Content-Type: application/json; charset=UTF-8");
    header("Access-Control-Allow-Methods: POST");
    header("Access-Control-Max-Age: 3600");
    header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");

    include_once '../config/database.php';
    include_once '../class/employees.php';

    $database = new Database();
    $db = $database->getConnection();

    $item = new Employee($db);

    $data = json_decode(file_get_contents("php://input"));

    $item->name = $data->name;
    $item->email = $data->email;
    $item->age = $data->age;
    $item->designation = $data->designation;
    $item->created = date('Y-m-d H:i:s');
    
    if($item->createEmployee()){
        echo 'Employee created successfully.';
    } else{
        echo 'Employee could not be created.';
    }
?>

Méthode Point final POSTE http://localhost:8080/api/create.php Insérer ou ajouter un enregistrement unique dans une table MySQL Modifier/mettre à jour une table MySQL à l'aide de l'API PHP 8 Cette étape explique comment mettre à jour ou modifier les données d'enregistrements MySQL spécifiques. L'API RESTful de PHP 8 permet d'effectuer les mises à jour nécessaires dans les données stockées dans la base de données MySQL. Créez un fichier update.php dans le api dossier et placez le code suivant. update.php


  <\?php
    header("Access-Control-Allow-Origin: *");
    header("Content-Type: application/json; charset=UTF-8");
    header("Access-Control-Allow-Methods: POST");
    header("Access-Control-Max-Age: 3600");
    header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
    
    include_once '../config/database.php';
    include_once '../class/employees.php';
    
    $database = new Database();
    $db = $database->getConnection();
    
    $item = new Employee($db);
    
    $data = json_decode(file_get_contents("php://input"));
    
    $item->id = $data->id;
    
    // employee values
    $item->name = $data->name;
    $item->email = $data->email;
    $item->age = $data->age;
    $item->designation = $data->designation;
    $item->created = date('Y-m-d H:i:s');
    
    if($item->updateEmployee()){
        echo json_encode("Employee data updated.");
    } else{
        echo json_encode("Data could not be updated");
    }
?>

Méthode Point final POSTE http://localhost:8080/api/update.php Modifier/mettre à jour une table MySQL à l'aide de l'API PHP 8 Supprimer/Supprimer un enregistrement MySQL unique à l'aide de l'API PHP Créez le fichier delete.phpapi dans le dossier. Dans ce fichier, nous écrirons la connexion pour supprimer l'enregistrement d'un employé de la table de données MySQL à l'aide de l'API RESTful PHP 8. Nous effectuerons l'appel d'API à l'aide de la deletedEmployee() méthode. delete.php


  <\?php
    header("Access-Control-Allow-Origin: *");
    header("Content-Type: application/json; charset=UTF-8");
    header("Access-Control-Allow-Methods: POST");
    header("Access-Control-Max-Age: 3600");
    header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
    
    include_once '../config/database.php';
    include_once '../class/employees.php';
    
    $database = new Database();
    $db = $database->getConnection();
    
    $item = new Employee($db);
    
    $data = json_decode(file_get_contents("php://input"));
    
    $item->id = $data->id;
    
    if($item->deleteEmployee()){
        echo json_encode("Employee deleted.");
    } else{
        echo json_encode("Data could not be deleted");
    }
?>

Méthode Point final SUPPRIMER localhost:8080/api/delete.php Supprimer/Supprimer un enregistrement MySQL unique à l'aide de l'API PHP Résumé Voilà donc, dans ce tutoriel, nous avons appris à créer une API RESTful CRUD simple avec PHP 8 et MySQL 8, nous avons également exploré des méthodes PHP utiles telles que htmlspecialchars() , bindParam() , execute() , PHP PDO et json_encode() .

Windows garde 3 dossiers SECRETS sur votre PC… j’ai TOUT effacé 2026

Windows garde 3 dossiers SECRETS sur votre PC… j’ai TOUT effacé 2026 SANS PUBLICITES 💥 Windows garde 3 dossiers cachés qui enregistren...