Problème pour faie un update sur une date MySQL

Résolu/Fermé
Astolpho Messages postés 73 Date d'inscription vendredi 8 avril 2022 Statut Membre Dernière intervention 12 juin 2024 - 2 janv. 2023 à 15:55
Astolpho Messages postés 73 Date d'inscription vendredi 8 avril 2022 Statut Membre Dernière intervention 12 juin 2024 - 3 janv. 2023 à 09:30

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 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 718
Modifié le 2 janv. 2023 à 21:09

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 vendredi 8 avril 2022 Statut Membre Dernière intervention 12 juin 2024
3 janv. 2023 à 09:30

Bonjour jordane45, j'ai fait la modif.

tout fonctionne correctement. 

merci

0
yg_be Messages postés 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024 Ambassadeur 1 557
2 janv. 2023 à 18:11

bonjour,

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

0
Astolpho Messages postés 73 Date d'inscription vendredi 8 avril 2022 Statut Membre Dernière intervention 12 juin 2024
2 janv. 2023 à 19:17

ç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