PHP

Erreur de requête à une base de données en PHP

Résolu

Bonjour !

Je suis la formation << Créer son site de A à Z >>. Dans la partie 5.1 (Réaliser un formulaire d'inscription), quand j'essaie de faire une requête à la base de données, cela me ressort une erreur :

(PS: à la fin de l'erreur c'est pas on line 19 mais 21)


Voici mon code :

include_once('_data/connectData.php');

if (!empty($_POST)) {
extract($_POST);
  
  
          $valid = true;
  
  
          if (isset($_POST['login'])) {
              $USERNAME = trim($USERNAME);
              $MAIL = trim($MAIL);
              $PASSWORD = trim($PASSWORD);
              $CPASSWORD = trim($CPASSWORD);


            if(empty($USERNAME)) {
                $USERNAME_ERROR = 'Champ non renseigné.';
                $valid = false;
            } else {
                $request = $Data2 -> prepare("SELECT id
                    FROM `user`
                    WHERE username = ?");
                $request -> execute(array($USERNAME));
                $request = $request->fetch();


                if (isset($request['id'])) {
                    $valid = false;
                    $USERNAME_ERROR = "Ce nom d'utilisateur est déjà pris. Veuillez en choisir un autre.";
                };
            };


            if(empty($MAIL)) {
                $MAIL_ERROR = 'Champ non renseigné.';
                $valid = false;
            } else {
                $request = $Data2 -> prepare("SELECT *
                    FROM id
                    WHERE mail = ?");
                $request -> execute(array($MAIL));
                $request = $request->fetch();


                if (isset($request['id'])) {
                    $valid = false;
                    $MAIL_ERROR = "Un compte a déjà été créé avec cet email. Veuillez en choisir un autre";
                };
            };


            if(empty($PASSWORD)) {
                $PASSWORD_ERROR = 'Champ non renseigné.';
                $valid = false;
            } elseif ($PASSWORD <> $PASSWORD_ERROR) {
                $PASSWORD_ERROR = "Le mot de passe ne correspond pas à la confirmation.";
                $valid = false;
            }
        };


        if ($valid) {
            echo 'Valide à la requête.';
        };
    };


Voici connectData.php :

<?php
    // Déclaration d'une nouvelle classe
    class connexionDB {
        private $host    = 'localhost';  // nom de l'host  
        private $name    = 'tomot';    // nom de la base de donnée
        private $user    = 'root';       // utilisateur 
        private $pass    = '';       // 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 UTF8MB4', 
                PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
            }catch (PDOException $e){
                echo 'Erreur : Impossible de se connecter à la base de données : ' . $e;
                die();
            }
        }


        public function Data()
        {
            $this -> connexion;
        }
    }


    $Data1 = new connexionDB();


    $Data2 = $Data1 -> Data();
?>


Merci pour votre aide !

483 vues
31 janvier 2023 à 16:24 (Édité)
Cette pub permet au site de vivre ...

1 commentaire

J'ai trouvé la solution : j'ai supprimé 'include_once('_data.connectData.php');' et j'ai rajouté

$Data2 = new PDO('mysql:host=localhost; dbname=tomot', 'root', '');
Cette pub permet au site de vivre ...