PHP

Erreur page de connexion

Non Résolu

Bonjour/bonsoir,


J'ai cette erreur : PDOStatement::execute(): SQLSTATE[HY000]: General error: 1364 Field 'pseudo' doesn't have a default value in /storage/ssd3/570/12853570/public_html/connexion.php on line 54 pour je crois aucune raison


Voilà mon code :


if($valid){
            
            $req = $BDD->prepare("INSERT INTO utilisateurs (date_connexion) VALUES (?)");
            $req->execute(array(date("Y-m-d h:m:s")));
            
            $req = $BDD->prepare("SELECT *
            FROM utilisateurs
            WHERE id = ?");
            
        $req->execute(array($verif_utilisateur['id']));
        $verif_utilisateur = $req->fetch();
        
        $_SESSION['id'] = $verif_utilisateur['id'];
        $_SESSION['pseudo'] = $verif_utilisateur['pseudo'];
        $_SESSION['mail'] = $verif_utilisateur['mail'];
        
            header("Location: /");
            exit;
        }


Merci d'avance de vos aides.

1214 vues
14 mars 2020 à 23:52 (Édité)
Cette pub permet au site de vivre ...

19 commentaires

Peut tu me mettre le code entier de ta page (PHP + HTML )

Quel sont tes colonnes dans ta BDD

Salut @CrafterHide


À ta ligne 55 tu n'insère rien !

Voilà pourquoi rien ne rentre

Hey @Didoub74,


Depuis que j'ai fais ça, je viens de voir que ca me fait une ligne en null ( https://crafterhide-ytb.000webhostapp.com/imgs/erreur.PNG ).


Peux-tu m'aider ? Voilà mon code php :


<?php


session_start();


    include_once('db/connexion_db.php');
    
if(!isset($_SESSION['id'])){
    
    if(!empty($_POST)){
    extract($_POST);
    $valid = (boolean) true;
    
    if(isset($_POST['connexion'])){
        $mail = (String) strtolower(trim($mail));
        $password = (String) trim($password);
        
        if(empty($mail)){
            $valid = false;
            $err_mail = 'Veuillez renseigner le mail !';
        }else{
            $req = $BDD->prepare("SELECT id
            FROM utilisateurs
            WHERE mail = ?");
            
        $req->execute(array($mail));
        $utilisateur = $req->fetch();
        
            if(!isset($utilisateur['id'])){
                $valid = false;
                $err_mail = "Ce mail n'existe pas !";
            }
        }
        
        if(empty($password)){
            $valid = false;
            $err_password = 'Veuillez renseigner le mot de passe !';
        }
        
        $req = $BDD->prepare("SELECT id
            FROM utilisateurs
            WHERE mail = ? AND password = ?");
            
        $req->execute(array($mail, crypt($password, '$6$rounds=5000$sdfnbgsdhhGFCFGFhgd525er1f854D5QEFfeqDeqE5E$')));
        $verif_utilisateur = $req->fetch();
        
        if(!isset($verif_utilisateur['id'])){
            $valid = false;
            $err_mail = 'Adresse courielle ou mot de passe erroné !';
        }
            
        if($valid){
            
            $req = $BDD->prepare("INSERT INTO utilisateurs (date_connexion) VALUES (?)");
            $req->execute(array(date("Y-m-d h:m:s")));
            
            $req = $BDD->prepare("SELECT *
            FROM utilisateurs
            WHERE id = ?");
            
        $req->execute(array($verif_utilisateur['id']));
        $verif_utilisateur = $req->fetch();
        
        $_SESSION['id'] = $verif_utilisateur['id'];
        $_SESSION['nom_prenom'] = $verif_utilisateur['nom_prenom'];
        $_SESSION['pseudo'] = $verif_utilisateur['pseudo'];
        $_SESSION['mail'] = $verif_utilisateur['mail'];
        
            header("Location: /ach/");
            exit;
        }
    }
}


}else{
    header("Location: /ach/");
}
?>

Il n'y a pas de code pour cela !

• Il faut que tu aille dans phpmyadmin (ou autre)

• Il faut que tu rentre dans ta bdd

• Il faut que tu rentre dans ta table

• Il faut que tu aille dans structure

• Il faut que tu mette une valeur NULL à la ligne pseudo et ca marchera !

Hey @Jerem971,


Je viens de commencer php/sql comme tu le sais et je ne saurais faire cela sans un minimum de code.


Pourrais-tu s'il te plait me donner du code pour m'aider.


Merci de m'avoir expliqué.

Hello @CrafterHide,


L'erreur t'indique que tu n'a pas rentré de valeur par défaut à "pseudo".

Pour corriger cela, tu dois :


  • Mettre la colonne "pseudo" en NULL.
  • Mettre une valeur par défaut lors de l'insertion.
  • Passer le pseudo dans la requête SQL.


Tiens-moi/nous au courant 😉

Cette pub permet au site de vivre ...
1
2