Problème pour faie un update sur une date MySQL

Résolu
Astolpho Messages postés 74 Statut Membre -  
Astolpho Messages postés 74 Statut Membre -

Bonjour,

je n'arrive pas à mettre un champs "closed_at" avec la fonction NOW() DANS MySQL

ça fonctionne bien avec l'insert.

   function updList($state, $closed_at)
    {

      $id_todo_lists = $_POST['id_todo_lists'];

      $db = getDB();

      $sql = "UPDATE todo_lists
       
SET

state=:state
,closed_at=now();

WHERE id_todo_lists ='$id_todo_lists' ";

      try {
        // Prepare statement
        $stmt = $db->prepare($sql);
        $stmt->bindParam(':state', $state);
        $stmt->bindParam(':closed_at', $closed_at);
        return  $stmt->execute();
      } catch (Exception $e) {
        echo "Erreur dans la requête " . $sql;
        echo $e->getMessage();
        exit;
      }
    }

Je sais pas si c'est une erreur de syntaxe.


Windows / Chrome 108.0.0.0

2 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     

    Bonjour,

    Dans ton premier code, tu avais un point-virgule en trop dans ta requête

    Dans ton second.. tu n'utilises pas correctement les variables nommées...

    Modifie le comme ceci:

    function updList($state, $id_todo_lists)
    {
      $db = getDB();
    
      $sql = "UPDATE todo_lists   
              SET state = :state
                  ,closed_at = now()
              WHERE id_todo_lists =:id_todo_lists ";
    
      try {
        // Prepare statement
        $stmt = $db->prepare($sql);
        $stmt->bindParam(':state', $state);
        $stmt->bindParam(':id_todo_lists', $id_todo_lists);
        return  $stmt->execute();
      } catch (Exception $e) {
        echo "Erreur dans la requête " . $sql;
        echo $e->getMessage();
        exit;
      }
    }

    A noter que ta variable $id_todo_lists devient un paramètre de ta fonction et qu'il te faut donc la transmettre lors de l'appel de cette fonction.

    et que ta variable $closed_at n'est plus en paramètre de la fonction puisque tu veux directement utiliser le now.


    1
    1. Astolpho Messages postés 74 Statut Membre
       

      Bonjour jordane45, j'ai fait la modif.

      tout fonctionne correctement. 

      merci

      0
  2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     

    bonjour,

    as-tu testé la requête en direct dans la bdd?

    0
    1. Astolpho Messages postés 74 Statut Membre
       

      ça fonctionne sur la BDD en direct,

          function updList($state, $closed_at)
          {
      
            $id_todo_lists = $_POST['id_todo_lists'];
      
      
      
            $db = getDB();
      
            $sql = "UPDATE todo_lists   
      
             
      SET
      
      state=$state
      ,closed_at=now()
      
      WHERE id_todo_lists ='$id_todo_lists' ";
      
            try {
              // Prepare statement
              $stmt = $db->prepare($sql);
              $stmt->bindParam(':state', $state);
              $stmt->bindParam(':closed_at', $closed_at);
              return  $stmt->execute();
            } catch (Exception $e) {
              echo "Erreur dans la requête " . $sql;
              echo $e->getMessage();
              exit;
            }
          }

      ça fonctionne aussi comme ça. 

      Merci

      0