par
Cyrano » 28 oct. 2006, 22:58
Pour le guillemet symbolisant les secondes, si ta requête est dans une chaine de caractère PHP encadrées de guillemets, alors échappe-le :
$sql = "SELECT DATE_FORMAT(`maj`, '%d-%m-%Y %Hh%i\'%s\"') FROM tbl_tarifs";
on échappe l'apostrophe pour le SQL et on échappe le guillemet pour PHP. Ça peut être perturbant, mais il faut faire attentions à ces détails quand on mélange les langages en procédant par ordre de priorité.
Dans la requête SQL, on est en langage SQL : le format qu'on indique en paramètre de la fonction DATE_FORMAT() est pour le SQL une chaîne de caractères.
Reprenons à la base la requête en SQL pur :
Code : Tout sélectionner
SELECT DATE_FORMAT(`maj`, '%d-%m-%Y %Hh%i\'%s"') FROM tbl_tarifs
Si je colle ça en ligne de commande directement vers MySQL, pas besoin d'échapper le guillemet. Par contre, comme le format est une chaine de caractères encadrée d'apostrophes, l'apostrophe symbolisant les minutes ne foit pas être interprétée par MySQL mais lue telle quelle, il faut donc l'échapper.
Si ensuite je reprends cette requête pour l'intégrer dans du PHP, elle est alors traitée comme une chaine de caractères. il faut donc faire attention parce que là, on est en PHP : la chaîne est encadrées de guillemets, donc si la chaîne elle même contient aussi des guillemets, il ne faut pas qu'ils soient interprétés mais lus tels quels, il faut alors les échapper.
Est-ce que tu saisis mieux ?
Pour le guillemet symbolisant les secondes, si ta requête est dans une chaine de caractère PHP encadrées de guillemets, alors échappe-le :
[php]$sql = "SELECT DATE_FORMAT(`maj`, '%d-%m-%Y %Hh%i\'%s\"') FROM tbl_tarifs"; [/php]
on échappe l'apostrophe pour le SQL et on échappe le guillemet pour PHP. Ça peut être perturbant, mais il faut faire attentions à ces détails quand on mélange les langages en procédant par ordre de priorité.
Dans la requête SQL, on est en langage SQL : le format qu'on indique en paramètre de la fonction DATE_FORMAT() est pour le SQL une chaîne de caractères.
Reprenons à la base la requête en SQL pur :
[code]SELECT DATE_FORMAT(`maj`, '%d-%m-%Y %Hh%i\'%s"') FROM tbl_tarifs[/code]
Si je colle ça en ligne de commande directement vers MySQL, pas besoin d'échapper le guillemet. Par contre, comme le format est une chaine de caractères encadrée d'apostrophes, l'apostrophe symbolisant les minutes ne foit pas être interprétée par MySQL mais lue telle quelle, il faut donc l'échapper.
Si ensuite je reprends cette requête pour l'intégrer dans du PHP, elle est alors traitée comme une chaine de caractères. il faut donc faire attention parce que là, on est en PHP : la chaîne est encadrées de guillemets, donc si la chaîne elle même contient aussi des guillemets, il ne faut pas qu'ils soient interprétés mais lus tels quels, il faut alors les échapper.
Est-ce que tu saisis mieux ?