IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Interagir avec des bases de données en utilisant PDO en PHP


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Femme Profil pro
    Développeur Web
    Inscrit en
    Juin 2024
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2024
    Messages : 5
    Points : 11
    Points
    11
    Par défaut Interagir avec des bases de données en utilisant PDO en PHP
    En PHP, PDO (PHP Data Objects) est une extension qui fournit une couche d'abstraction pour l'accès aux bases de données, vous permettant de vous connecter à plusieurs bases de données en utilisant une interface unifiée. Voici un exemple de base pour utiliser PDO afin d'interagir avec une base de données MySQL.

    Tout d'abord, assurez-vous que votre environnement PHP a les extensions PDO et PDO_MySQL activées. Cela peut généralement être fait dans votre fichier de configuration `php.ini`.

    Ensuite, vous pouvez utiliser le code suivant pour vous connecter à la base de données et effectuer quelques opérations de base :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    <?php
     
    try {
        // DSN (Data Source Name) de PDO
        $dsn = 'mysql:host=localhost;dbname=votre_base_de_donnees;charset=utf8mb4';
        $username = 'votre_nom_utilisateur';
        $password = 'votre_mot_de_passe';
     
        // Créer une instance PDO
        $pdo = new PDO($dsn, $username, $password);
     
        // Définir le mode d'erreur sur exception
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     
        // Exécuter une requête
        $sql = "SELECT * FROM votre_table";
        $stmt = $pdo->query($sql);
     
        // Vérifier le jeu de résultats
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
            // Traiter chaque ligne
            echo "ID: " . $row['id'] . ", Nom: " . $row['name'] . "<br>";
        }
     
        // Fermer la connexion (optionnel, car PHP la fermera automatiquement à la fin du script)
        $pdo = null;
    } catch (PDOException $e) {
        // Gérer les erreurs de connexion ou de requête
        echo "Échec de la connexion : " . $e->getMessage();
    }
     
    ?>
    Dans le code ci-dessus, nous essayons d'abord de créer une instance PDO pour nous connecter à la base de données. Le DSN (Data Source Name) est une chaîne qui contient les informations de connexion à la base de données. Nous utilisons `new PDO()` pour créer une nouvelle instance PDO et passons le DSN, le nom d'utilisateur, et le mot de passe en paramètres.

    Nous définissons ensuite le mode d'erreur de PDO sur exception (`PDO::ERRMODE_EXCEPTION`). Cela signifie que si des erreurs de base de données se produisent, PDO lancera une exception, qui peut être interceptée et gérée en utilisant un bloc try-catch.

    Ensuite, nous exécutons une requête SQL pour récupérer des données de la base de données. Nous utilisons la méthode `$pdo->query()` pour exécuter la requête et stockons le jeu de résultats dans la variable `$stmt`. Nous utilisons ensuite une boucle pour itérer sur chaque ligne du jeu de résultats, en utilisant `$stmt->fetch(PDO::FETCH_ASSOC)` pour obtenir chaque ligne sous forme de tableau associatif.

    Enfin, nous fermons la connexion PDO (bien que cela ne soit pas strictement nécessaire, car PHP fermera automatiquement la connexion à la fin du script). Cependant, si vous avez besoin de réutiliser la connexion PDO dans d'autres parties du script ou si vous souhaitez vous assurer que la connexion est immédiatement fermée pour libérer des ressources, fermer manuellement la connexion est une bonne pratique.

    Note : Remplacez `votre_base_de_donnees`, `votre_nom_utilisateur`, `votre_mot_de_passe`, et `votre_table` dans le code ci-dessus par le nom de votre base de données, votre nom d'utilisateur, votre mot de passe, et le nom de votre table réels.

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 353
    Points : 39 764
    Points
    39 764
    Billets dans le blog
    9
    Par défaut
    Bonjour Helios

    Ce fil de discussion ressemble à un tutoriel, vous pourriez donc plutôt en faire soit un billet de blog, soit un véritable tutoriel en l'étoffant un peu.

    À propos de tutoriel, tant qu'à faire d'en créer un, autant qu'il ne contienne que des bonnes pratiques. En l'occurrence, ici, ce n'est pas tout à fait le cas, puisque vous incluez une requête SELECT *, ce qui est un très mauvais exemple .
    Également, il est recommandé pour que les traitements ne soient pas impactés par l'évolution des structures, de ne pas accéder aux tables, mais aux vues.

    Voyez ICI pourquoi SELECT * n'est pas recommandé.

    Le code devrait donc être SELECT Col1, Col2, [...] Coln FROM votre_vue

  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    il est recommandé pour que les traitements ne soient pas impactés par l'évolution des structures, de ne pas accéder aux tables, mais aux vues.
    Bonjour escartefigue, pourriez-vous indiquer un site qui traite ce point ?

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 353
    Points : 39 764
    Points
    39 764
    Billets dans le blog
    9
    Par défaut
    Ce principe fait partie des 12 règles de Codd qui définissent les principes que doivent respecter toutes les bases de données relationnelles.

    Il y a de nombreux articles sur ce sujet, dont le billet de Fsmrel, disponible ICI

    Voir également l'article de Wikipédia

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/07/2011, 18h05
  2. Réponses: 5
    Dernier message: 14/10/2008, 11h54
  3. Lier VB.NET avec des bases de données IBM (TN3270)
    Par bonilla dans le forum VB.NET
    Réponses: 4
    Dernier message: 28/09/2007, 14h40
  4. [C#] interagir avec des équipements telecom
    Par Abydos Business Group dans le forum C#
    Réponses: 2
    Dernier message: 09/01/2007, 13h58
  5. Probleme de connexion JDBC avec une base de donne mysql
    Par sultan_kafila dans le forum JDBC
    Réponses: 19
    Dernier message: 12/04/2006, 08h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo