Erreur SQL avec PDO sur une variable de SESSION : General error: 1364 Field 'name' doesn't have a default value
2 months ago par axel.vo

  • 1

    Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 1364 Field 'name' doesn't have a default value in /shared/httpd/test/htdocs/donne.php:27 Stack trace: #0 /shared/httpd/test/htdocs/donne.php(27): PDOStatement->execute(Array) #1 {main} thrown in /shared/httpd/test/htdocs/donne.php on line 27 cette erreur me bloque . je voudrai que quand on envoi un message sur ma page message.php sa envoi sur la page verification.php (ca sa marche) mais quand le code s'execute il me marque l'erreur

    <?php
    session_start();
    try
    {
        $bdd = new PDO('mysql:host=127.0.1.1;dbname=minichat;charset=utf8', 'root', '');
        $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    }
    catch(Exception $e)
    {
            die('Erreur : '.$e->getMessage());
    }
    
    // insertion du message à l'aide d'une requête prepare
    $req = $bdd->prepare('INSERT INTO chat (message , name) 
                          VALUES(? , ?)');
    $reqC = $bdd->prepare('INSERT INTO user (color) 
    VALUES(?)');
    //executation de la requête prepare
    $req->execute(array(
    
        $_POST['message'],
        $_SESSION["name"]
    
    ));
    $reqC->execute(array( 
        $_SESSION["color"]
    
    ));
    
    // redirection du visiteur vers la page du minichat
    header('Location: message.php');

    merci de votre aide


    Réponses (1)


    Gael
    Karma : 649
    2019-04-17 17:28:56
  • 2

    Axel,

    L'erreur est parlante, même s'il faut bien sûr savoir l'intérpréter.

    Field 'name' doesn't have a default value Tu essayes de rentrer une ligne SQL en remplissant name et message, mais le contenu de name est probablement égal à NULL. Du coup SQL essaye d'y mettre une valeur par défaut, mais il n'y arrive pas car il n'yen a pas de défini.

    Pour résumer :

    1/ Ta requête SQL semble correcte, mais $_SESSION["name"] semble contenir la valeur NULL.

    2/ Tu peux décider de passer l'erreur en modifiant la colonne name de façon à ce qu'elle accepte les valeurs de type NULL. Ceci dit ton bug ne sera pas reglé, car le nom sera vide. Mais tu n'auras plus d'erreurs.

    3/ Tu dois donc enquêter pour savoir pourquoi $_SESSION["name"] est vide. Ca ne t'empêche pas de faire le point précédent.

    //hey ho !