Problème pour faie un update sur une date MySQL

Résolu
Astolpho Messages postés 73 Date d'inscription   Statut Membre Dernière intervention   -  
Astolpho Messages postés 73 Date d'inscription   Statut Membre Dernière intervention   -

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

A voir également:

2 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

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
Astolpho Messages postés 73 Date d'inscription   Statut Membre Dernière intervention  
 

Bonjour jordane45, j'ai fait la modif.

tout fonctionne correctement. 

merci

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 

bonjour,

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

0
Astolpho Messages postés 73 Date d'inscription   Statut Membre Dernière intervention  
 

ç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