Se connecter à une base de données en PHP

Connexion à une base de données avec PDO en PHP



La première étape avant de se lancer dans la conception de son site et de créer une connexion directe avec sa base de données si vous avez besoin de stocker des données par la suite.

Nous allons pour créer pour commencer un nouveau dossier à la racine du dossier de votre site que vous nommerez bd. Dans ce dossier vous allez créer un nouveau fichier que l'on appelera connexionDB.php. Dans ce fichier nous allons mettre tout le code qui sera sur cet article.


Page connexionDB.php



Le code ci-dessous est une classe qui permet de créer cette connexion. Cependant il vous faudra renseigner quelques informations essentielles telles que :

  • le nom de l'host, (si vous êtes en local alors l'host se nommera localhost)
  • le nom de votre base de données,
  • l'utilisateur,
  • le mot de passe (sous Windows il se peut qu'il ne faudra pas mettre root).
// Déclaration d'une nouvelle classe
class connexionDB {
    private $host    = 'localhost';    // nom de l'host
    private $name    = 'name_bdd';     // nom de la base de donnée
    private $user    = 'root';         // utilisateur
    private $pass    = 'root';         // mot de passe (il faudra peut-être mettre '' sous Windows)
    private $connexion;

    function __construct($host = null, $name = null, $user = null, $pass = null){
        if($host != null){
            $this->host = $host;           
            $this->name = $name;           
            $this->user = $user;          
            $this->pass = $pass;
        }
    try{
            $this->connexion = new PDO('mysql:host=' . $this->host . ';dbname=' . $this->name,
                $this->user, $this->pass, array(PDO::MYSQL_ATTR_INIT_COMMAND =>'SET NAMES UTF8', 
                PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
    }catch (PDOException $e){
        echo 'Erreur : Impossible de se connecter  à la BDD !';
    die();
   }
  }
}

Le code ci-dessous vous permettra d'utiliser cette classe afin de créer une connexion pour y réaliser des requêtes SQL.

// Faire une connexion à votre fonction
$DB = new connexionDB();


Fonction query



L'utilité de la fonction query va vous permettre de gagner un gain de vitesse lorsque vous allez écrire une requête sql afin d'interroger votre serveur.

La fonction query est à utiliser de préférence avec la requête SELECT.

public function query($sql, $data = array()){
    $req = $this->connexion->prepare($sql);
    $req->execute($data);

    return $req;
}

Rajouter cette fonction dans la classe connexionDB.

Ci-dessous le code pour utiliser cette fonction de plusieurs façon.

// Première méthode
$req = $DB->query("SELECT * FROM nom_table");
$req = $req->fetch();
// Deuxième méthode
$req = $DB->query("SELECT * FROM nom_table WHERE id = ?",
    array(1));
$req = $req->fetch();
// Troisième méthode
$req = $DB->query("SELECT * FROM nom_table WHERE id = :id",
    array('id' => 1));
$req = $req->fetch();


Fonction Insert



Je vous propose une fonction que j'ai nommé insert afin d'insérer, de modifier ou de supprimer des données sur votre serveur.

La fonction insert est à utiliser de préférence avec les requêtes INSERT, UPDATE et DELETE.

public function insert($sql, $data = array()){
    $req = $this->connexion->prepare($sql);
    $req->execute($data);
}

Rajouter cette fonction dans votre classe connexionDB.



Ci-dessous je vous montre comment utiliser cette fonction de plusieurs façon.

// Première méthode avec INSERT
$DB->insert("INSERT INTO nom_table (prenom, nom, age) VALUES (?, ?, ?)",
    array("jean", "dupont", 20));
// Deuxième méthode avec UPDATE
$DB->insert("UPDATE nom_talbe SET prenom = ?, nom = ?, age = ? WHERE id = ?",
    array("michel", "durant", 22, 1));
// Troisième méthode avec DELETE
$DB->query("DELETE FROM nom_table WHERE id = ?",
    array(1));


Rendu final



Voici ce que devra contenir votre fichier connexionDB.php pour poursuivre les différents articles. (Vous pouvez également le faire avec votre propre méthode pour les articles d'après).

// Déclaration d'une nouvelle classe
class connexionDB {
    private $host    = 'localhost';    // nom de l'host
    private $name    = 'name_bdd';     // nom de la base de donnée
    private $user    = 'root';         // utilisateur
    private $pass    = 'root';         // mot de passe
    //private $pass    = '';           // Ne rien mettre si on est sous windows
    private $connexion;

    function __construct($host = null, $name = null, $user = null, $pass = null){
        if($host != null){
            $this->host = $host;           
            $this->name = $name;           
            $this->user = $user;          
            $this->pass = $pass;
        }
    try{
        $this->connexion = new PDO('mysql:host=' . $this->host . ';dbname=' . $this->name,
            $this->user, $this->pass, array(PDO::MYSQL_ATTR_INIT_COMMAND =>'SET NAMES UTF8', 
            PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
    }catch (PDOException $e){
        echo 'Erreur : Impossible de se connecter  à la BDD !';
    die();
   }
  }
    public function query($sql, $data = array()){
        $req = $this->connexion->prepare($sql);
        $req->execute($data);

        return $req;
    }
    public function insert($sql, $data = array()){
        $req = $this->connexion->prepare($sql);
        $req->execute($data);
    }
}

// Faire une connexion à votre fonction
$DB = new connexionDB();
Par Clouder le 22 May 2018
Vous pouvez télécharger les fichiers de l'article
Cette pub permet au site de vivre ...

4 commentaires

Tu veux participer ?
Alors connecte toi ou inscris toi et viens participer !
Clouder
le 26 Nov 2018 à 22:21
Salut DevelopArt 🙂,

Désolé pour la réponse tardive !

Peux-tu me dire si ces pré-requis sont ok pour toi :
  • WAMP ou MAMP est activé sur ton PC ou MAC,
  • Dans PhpMyAdmin tu as crée une nouvelle base de donnée (exemple : test)

Si oui si tu es sous Windows il faudra faire ça : 
private $host    = 'localhost';   // nom de l'host    
private $name = 'test'; // nom de la base de donnée
private $user = 'root'; // utilisateur
private $pass = '';
DevelopArt
le 23 Nov 2018 à 13:59
je te l'es envoyé par message et merci de ta réponse, mais le code et le même que le tien avec mes donnée forcément :)
Clouder
le 23 Nov 2018 à 10:02
Peux tu me mettre le code que tu as mis ? 😊
DevelopArt
le 22 Nov 2018 à 18:12
bonjour,
toujours le même problème, lorsque je rentre :  $DB = new connexionDB(); 
cela me marque l'erreur  de la connexion a la BDD alors que losqu'il est enlevé tout se passe bien juste je suis pas conecté a ma BDD
comment régler le probléme, je ne comprend pas d'ou il vient
merci d'avance pour vos réponses.