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 :

Requête SQL INSERT ne s'exécute pas [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Femme Profil pro
    Webmaster
    Inscrit en
    Octobre 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2015
    Messages : 16
    Points : 11
    Points
    11
    Par défaut Requête SQL INSERT ne s'exécute pas
    Bonjour,

    J'ai un gros problème, ma requête SQL "INSERT INTO" ne s'exécute pas.
    Les autres requêtes s'exécute sans aucun problème.

    Voici ma fonction register:

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
            public function register(){
                $login      = isset($_POST['login'])    ? $_POST['login']       : null;
                $email      = isset($_POST['email'])    ? $_POST['email']       : null;
                $password   = isset($_POST['password']) ? $_POST['password']    : null;
                $password2  = isset($_POST['password2'])? $_POST['password2']   : null;
                $captcha    = isset($_POST['captcha'])  ? $_POST['captcha']     : null;
     
                if(!$login || !$email || !$password|| !$password2)
                    return parent::ajax_result(false, 'Veuillez remplir tout les champs!');
     
                if($password != $password2)
                    return parent::ajax_result(false, 'Les mots de passe ne correspondent pas!');
     
                if(strlen($login) < 5)
                    return parent::ajax_result(false, 'Longueur minimale du pseudo [5]!');
     
                if(strlen($login) >= 50)
                    return parent::ajax_result(false, 'Longueur maximale du pseudo [50]!');
     
                if(!preg_match("/^[0-9a-zA-Z_]{5,50}$/", $login))
                     return parent::ajax_result(false, 'Le pseudo contient des caractères interdits!');
     
                if(strlen($email) < 5)
                    return parent::ajax_result(false, 'Longueur minimale de l\'adresse email [5]!');
     
                if(strlen($email) >= 50)
                    return parent::ajax_result(false, 'Longueur maximale de l\'adresse email [50]!');
     
                if (!filter_var($email, FILTER_VALIDATE_EMAIL))
                    return parent::ajax_result(false, 'Entrez un message valide.!');
     
                if(strlen($password) < 5)
                    return parent::ajax_result(false, 'Longueur minimale du mot de passe [5]!');
     
                if(strlen($password) >= 50)
                    return parent::ajax_result(false, 'Longueur maximale du mot de passe [50]!');
     
                $captcha_key = parent::getSetting('secret_key');
                $check  = parent::Captcha($captcha, $captcha_key);
                if($check == false)
                    return parent::ajax_result(false, 'Le captcha n\'est pas rempli!');
     
                $login = parent::SECURE($login);
                $email = parent::SECURE($email);
                $password2 = md5($password2);
     
                $this->query_select_one = true;
     
                $checkLogin = parent::query("SELECT * FROM `Users` WHERE `login` = '{$login}' LIMIT 1");
                if($checkLogin != false)
                    return parent::ajax_result(false, 'Ce pseudo existe déjà!');
     
                $checkEmail = parent::query("SELECT * FROM `Users` WHERE `email` = '{$email}' LIMIT 1");
                if($checkEmail != false)
                    return parent::ajax_result(false, 'Cet email existe déjà!');
     
                $ctime = time();
                $this->query_select = false;
                $res = parent::query("INSERT INTO `Users`(`login`, `email`, `password`, `date_register`, `freez_status`) VALUES ('{$login}', '{$email}', '{$password2}', '{$ctime}', '0' )");
     
                setcookie('login', $login, time() + 60 * 60 * 24 * 1488, '/');
                setcookie('password', $password, time() + 60 * 60 * 24 * 1488, '/');
     
                return parent::ajax_result(true, 'Bienvenue !');
                }
    Je ne comprend pas d'ou viens le problème. C'est bien la seule qui ne fonctionne pas..

    EDIT: Je viens de changer le hachage du mot de passe grâce à password_hash et le mot de passe en clair dans le cookie à été résolu.
    EDIT 2: Avec une requete préparée, le problème est toujours le même.


    Cordialement.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- montre le nouveau code, corrigé.
    + la structure de la table users.

    2- vérifié ce que contient les variables : echo...

    3-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setcookie('password....
    JAMAIS de la vie on ne met un mot de passe en cookie !

  3. #3
    Membre à l'essai
    Femme Profil pro
    Webmaster
    Inscrit en
    Octobre 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2015
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    1) Voici le nouveau code corrigé:

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
            public function register(){
                $login      = isset($_POST['login'])    ? $_POST['login']       : null;
                $email      = isset($_POST['email'])    ? $_POST['email']       : null;
                $password   = isset($_POST['password']) ? $_POST['password']    : null;
                $password2  = isset($_POST['password2'])? $_POST['password2']   : null;
                $captcha    = isset($_POST['captcha'])  ? $_POST['captcha']     : null;
     
                if(!$login || !$email || !$password|| !$password2)
                    return parent::ajax_result(false, 'Veuillez remplir tout les champs!');
     
                if($password != $password2)
                    return parent::ajax_result(false, 'Les mots de passe ne correspondent pas!');
     
                if(strlen($login) < 5)
                    return parent::ajax_result(false, 'Longueur minimale du pseudo [5]!');
     
                if(strlen($login) >= 50)
                    return parent::ajax_result(false, 'Longueur maximale du pseudo [50]!');
     
                if(!preg_match("/^[0-9a-zA-Z_]{5,50}$/", $login))
                     return parent::ajax_result(false, 'Le pseudo contient des caractères interdits!');
     
                if(strlen($email) < 5)
                    return parent::ajax_result(false, 'Longueur minimale de l\'adresse email [5]!');
     
                if(strlen($email) >= 50)
                    return parent::ajax_result(false, 'Longueur maximale de l\'adresse email [50]!');
     
                if (!filter_var($email, FILTER_VALIDATE_EMAIL))
                    return parent::ajax_result(false, 'Entrez un message valide.!');
     
                if(strlen($password) < 5)
                    return parent::ajax_result(false, 'Longueur minimale du mot de passe [5]!');
     
                if(strlen($password) >= 50)
                    return parent::ajax_result(false, 'Longueur maximale du mot de passe [50]!');
     
                $captcha_key = parent::getSetting('secret_key');
                $check  = parent::Captcha($captcha, $captcha_key);
                if($check == false)
                    return parent::ajax_result(false, 'Le captcha n\'est pas rempli!');
     
                $login = parent::SECURE($login);
                $email = parent::SECURE($email);
                $password2 = password_hash($password2, PASSWORD_DEFAULT); 
     
                $this->query_select_one = true;
     
                $checkLogin = parent::query("SELECT * FROM `Users` WHERE `login` = '{$login}' LIMIT 1");
                if($checkLogin != false)
                    return parent::ajax_result(false, 'Ce pseudo existe déjà!');
     
                $checkEmail = parent::query("SELECT * FROM `Users` WHERE `email` = '{$email}' LIMIT 1");
                if($checkEmail != false)
                    return parent::ajax_result(false, 'Cet email existe déjà!');
     
                $ctime = time();
                $this->query_select = false;
                $res = parent::query("INSERT INTO `Users`(`login`, `email`, `password`, `date_register`, `freez_status`) VALUES ('{$login}', '{$email}', '{$password2}', '{$ctime}', '0' )");
     
                setcookie('login', $login, time() + 60 * 60 * 24 * 1488, '/');
                //setcookie('password', $password, time() + 60 * 60 * 24 * 1488, '/');
     
                return parent::ajax_result(true, 'Bienvenue !');
                }
    ainsi que la structure de la table Users:

    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
     
    CREATE TABLE `Users` (
      `id` int(11) NOT NULL,
      `login` varchar(50) NOT NULL,
      `referer` varchar(255) DEFAULT NULL,
      `email` varchar(50) NOT NULL,
      `password` varchar(50) NOT NULL,
      `subscription` int(11) DEFAULT NULL,
      `binding` varchar(8192) DEFAULT NULL,
      `class` varchar(15) NOT NULL DEFAULT 'user',
      `config` varchar(30) NOT NULL DEFAULT '1',
      `date_register` int(11) NOT NULL,
      `freez_status` int(1) NOT NULL,
      `freez_start` text CHARACTER SET utf8mb4 NOT NULL,
      `token` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
      `ref_discount` float DEFAULT NULL,
      `balance` float NOT NULL DEFAULT '0',
      `salary` float NOT NULL DEFAULT '0'
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='UPDATE Users SET subscription=subscription+259200' ROW_FORMAT=COMPACT;
     
    ALTER TABLE `Users`
      ADD PRIMARY KEY (`id`),
      ADD UNIQUE KEY `login` (`login`);
     
    ALTER TABLE `Users`
      MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
    COMMIT;
    2) Après un echo de $res, le formulaire ne fonctione plus. De plus le formulaire utilise AJAX, il n'y à aucune erreur et les dump et echo ne fonctionne pas..

    3) Oui je le sais, ceci à été corrigé hier soir

  4. #4
    Membre à l'essai
    Femme Profil pro
    Webmaster
    Inscrit en
    Octobre 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2015
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Bon voila j'ai trouver la solution je la poste au cas ou quelqu'un aurait le même problème.
    Je l'ai trouvé sur un site anglais, en gros MySQL s'éxécute en mode strict et donc il suffit de taper, dans "SQL" la commande: SET GLOBAL sql_mode=''

    Merci à vous de votre aide et de vos corrections !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête d'insertion ne s'exécute pas
    Par djo_jojo dans le forum JDBC
    Réponses: 2
    Dernier message: 11/08/2010, 15h16
  2. Réponses: 6
    Dernier message: 15/09/2009, 11h18
  3. [SQL] Requête UPDATE qui ne s'exécute pas avec PHP
    Par xplose dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 16/08/2007, 09h42
  4. [MySQL] requete sql qui ne s'exécute pas
    Par anto48_4 dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 16/03/2006, 09h12
  5. Réponses: 13
    Dernier message: 30/01/2006, 14h21

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