Bonjour,
Aujourd'hui, en réalisant l'update de tables SQL, je me suis retrouvé confronté à un problème de syntaxe concernant l'update d'une seule colonne dans une table puis de plusieurs colonnes dans cette même table.
Dans les requêtes suivantes, le champ date est de type DATE, le champ commentaire est de type VARCHAR.
La première requête, utilisant des guillemets simples, fonctionne sans problèmes :
$result = $this->query('UPDATE nomTable SET date = '. $date .' WHERE id = '.$id.'');
Cette deuxième requête, utilisant elle aussi des guillemets simples, ne réalise pas l'update, il échoue :
$result = $this->query('UPDATE nomTable SET commentaire = '. $commentaire .', date = '. $date .' WHERE id = '. $id .'');
Après avoir cherché un certain temps, j'ai fini par utiliser des doubles quotes pour réaliser la concaténation, ce qui a résolu mon problème.
$result = $this->query('UPDATE nomTable SET commentaire = "'. $commentaire .'", date = "'. $date .'" WHERE id = '. $id .'');
Las questions que je me pose à présent sont :
Pourquoi la première requête fonctionne alors que la deuxième échoue ? Je devrais logiquement rencontrer les mêmes problèmes de syntaxe pour le champ date non ? Tout en sachant que, si je met des guillemets doubles au champ commentaire et que je laisse des guillemets simples pour le champ date dans la troisième requête, l'update de la date se fera alors à la valeur 0000-00-00.
Devrais-je réaliser la concaténation de ma première requête avec des guillemets doubles et, si oui, pourquoi ?
Voilà, c'est tout, d'avance merci à vous.