Bonjour,

Voila je rencontre un petit problème avec mon code.

Décrivez ici votre code ou ce que vous cherchez à faire
je je cherche a injecter des donner dans la base de donner

<?php
if(!empty($_POST)){

    $errors = array();

    if(empty($_POST['pseudo']) || !preg_match('/^[a-zA-Z0-9_]+$/',$_POST['pseudo'])){

        $errors['pseudo'] = "vous n'avez pas entrer de pseudo";
    }

    if(empty($_POST['email']) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
        $errors['email']= "vous n'avez pas entrer de email";
    }

    if(empty($_POST['password']) || $_POST['password'] != $_POST['password_confir']){
        $errors['password']= "vous devez rentrer un mot de passe valide";
    }  

   if(empty($errors)){

   $req = $register->query('INSERT INTO users SET pseudo = ?, email = ?, password = ?');

   $password = password_hash($_POST['password'],PASSWORD_BCRYPT);

       $req =([$_POST['pseudo'],$_POST['email'],$password]);
       print_r($req);
    die('Votre compte  a bien ete créé') ;  
   }

}
   ?>
   le code  connection 
   <?php 
class DB{
private $host = 'localhost';
private $user = 'root';
private $pass = '';
private $base = 'douceplume';
private $db;

public function __construct($host = null, $user = null, $pass = null, $base = null){
    if($host != null){
        $this ->$host = $host;
        $this ->$user = $user;
        $this ->$pass = $pass;
        $this ->$base = $base;

    }
    try {
    $this -> db = new PDO('mysql:host='.$this ->host.';dbname='.$this ->base, $this -> user, $this ->pass,array(PDO::MYSQL_ATTR_INIT_COMMAND =>'SET NAMES UTF8',PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
    }catch(PDOException $e){
        die('<h2>impossible de se connecter a la base de donner </h2>');
    }

}

 public  function query($sql){
     $req = $this -> db -> prepare($sql);
     $req ->execute();
     return $req -> fetchAll(PDO::FETCH_OBJ);
 }  
}

Ce que j'obtiens

voici l'erreur que je rencontre

Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: no parameters were bound in D:\Programme\Xampp\htdocs\Site\Class\Connection.php on line 27

Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number in D:\Programme\Xampp\htdocs\Site\Class\Connection.php on line 27
Array ( [0] => patrick [1] => delz@gmail.com [2] => $2y$10$cY1tmmqEZtKP29Qt/AV08e2VzcXRfVUXo9RsDWOVPKK7voXd1Ghs6 ) votre compte a bien ete créé

2 réponses


Bonjour,
Je t'invite a revoir comment on fait les requêtes prépare + execute.

Bonsoir.
Il te faut également revoir la syntaxe pour un INSERT.
Autre chose:

// Ce n'est pas:
$this->$host
// Mais:
$this->host