devoir "quoter" les entrées de sql_update ?
Bonjour, j’ai migré vers spip2.1 un plugin maison que je n’ai pas développé. J’ai donc remplacé tous les spip_query par des sql_select ou des sql_update etc.
J’ai un problème avec sql_update, ce que je dois faire pour que ça fonctionne ne correspond pas à la documentation.
La documentation me dit de faire :
sql_update('table', array('colonne' => sql_quote($valeur)));
moi je dois faire
sql_update('table', array('colonne' =>"'".sql_quote($valeur)."'"));
c’est à dire que je dois explicitement entourer mes valeurs de simple quotes (evidemment après avoir échapé celles contenu dans la variable, pas avant), en d’autres termes, je suis obligé d’imaginer la requête SQL que sql_update est sensée écrire pour moi.
Est-ce normal ? Ou est-ce un bug ? J'ai regardé vite-fait le code de Spip et je n'ai pas trouvé cette manière de faire ! Je penche donc pour un bug ! Il semble que dans mon cas, le contenu de la variable $valeur est concaténée à la requête SQL formée sans précaution.
Je suppose que (si ma variable $valeur contient une espace, par exemple "test sql" la requête SQL formée ressemble à
UPDATE table SET colonne=test sql;
M'obligeant à faire le contournement précité pour obtenir la requête valide :
UPDATE table SET colonne='test sql';
note : Dans le code du plugin, la variable $valeur est récupérée d'un formulaire POST. note : la version de spip est 2.1.12 et le gestionnaire de base de donnée est mySQL.