Bonjour,
j'ai une requète sql qui, dans phpadmin fonctionne très bien et qui est la suivante:
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 UPDATE `kot_stay` SET `date_start` = STR_TO_DATE( '2020-10-16', '%Y-%m-%d'), `date_end` = STR_TO_DATE('2020-10-27', '%Y-%m-%d'), `price` = 11, `departure_time` = '20', `arrival_time` = '21' where id_stay = 446;
La requête fonctionne très bien et les champs dates sont correctement mis à jour.
Je transpose cette requête en php dans une fonction de ma classe, ce qui devient :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 public function update() { // CHANGE THIS : exemple d'utilisation $sql = 'UPDATE `' . self::TABLE_NAME . '` SET `' . self::FIELD_START . '` = STR_TO_DATE(:start, \'%Y-%m-%d\'), `' . self::FIELD_END . '` = STR_TO_DATE(:end, \'%Y-%m-%d\'), `' . self::FIELD_PRICE . '` = :price, `' . self::FIELD_DEPARTURE . '` = :departure, `' . self::FIELD_ARRIVAL . '` = :arrival ' . ' where id_stay = ' . $this->_id; $this->_select = $this->_con->prepare($sql); $this->_select->bindParam(':start', $this->_start, PDO::PARAM_STR, 8); $this->_select->bindParam(':end', $this->_end, PDO::PARAM_STR, 8); $this->_select->bindParam(':price', $this->_price, PDO::PARAM_INT, 4); $this->_select->bindParam(':departure', $this->_departure_time, PDO::PARAM_STR, 5); $this->_select->bindParam(':arrival', $this->_arrival_time, PDO::PARAM_STR, 5); $this->exe(); // simple exécution de la requète avec stockage du retour et gestion des erreurs. Utilisé partout, n'est pas concerné par le problème. }
les variables dates, copiées depuis $_POST que j'affiche sont les suivantes:
les deux dates ont simplement été stockées dans les variables de classe sans manipulation.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 date_start array(1) { [0]=> string(10) "2020-10-16" } date_end array(1) { [0]=> string(10) "2020-10-17" }
Le soucis, c'est qu'après mise à jour, mes deux champs dates contiennent tous les deux la valeur :
Si vous avez une solution, je suis très intéressé de la connaître.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 00-00-0000
Partager