Modérateur PHPfrance |
10684 Messages
31 mai 2012, 23:09
sprintf permet de formater une chaine... c'est souvent utilisé dans les tutos, mais j'avoue que personnellement je n'ai jamais compris l'intérêt de cette fonction pour faire des requêtes SQL. Celles-ci n'ont pas besoin d'un format d'affichage et pire que tout, c'est une vrai galère pour savoir quel valeur est utilisée à quel endroit.
Quoi qu'il en soit, pour que cela fonctionne, il faut que tu remplaces la variable dans ta requête sql par un spécificateur qui permettre à la fonction de savoir quoi remplacer (c'est pas clair, je sais, mais avec l'exemple ça te parlera plus

)
$sql= sprintf("update cycle set titre_cycle='%s' where id_cycle=%d", mysql_real_escape_string($titre_cycle), $id_cycle);
Dans cet exemple, le %s va être remplacé par le premier argument (donc le titre protégé), le %d par le second argument (donc l'id cycle). Quand il n'y a que 2 valeurs à remplacer, ça va encore, mais dès qu'il y en a 10, c'est vite la pagaille pour repérer dans quel ordre ils doivent être...
Personnellement je trouve ceci plus lisible et plus facile à maintenir :
$sql= "UPDATE cycle SET titre_cycle='" . mysql_real_escape_string($titre_cycle) . "' WHERE id_cycle=" . $id_cycle;
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...