[spip-dev] sql_updateq d'un champ datetime avec la valeur NULL (mysql)

Bonjour,

Avant de poser un bug dans le trac de SPIP et après avoir posé la
question sur IRC, peut-être pourriez-vous me confirmer s'il s'agit d'un
bug :

Je souhaite faire une mise à jour sur un champ datetime d'une base MySql
avec sql_updateq (code ci-dessous) mais un var_dump de la requete
(ds /ecrire/req/mysql.php) me montre que spip remplace le champs NULL
par une chaine de caractère vide, aussi le champs datetime devient
"0000-00-00" et non pas NULL.

Bug or feature ?

//code
$table = 'newletters';
$where = "hash='".$hash."' AND id_abonne='".$id."'";
$arg = array('debut_inscription'=>date("Y-m-d H:i:s"),
'fin_inscription'=> NULL);

sql_updateq($table, $arg, $where);

//var_dump :
UPDATE newletters SET debut_inscription='2010-03-01
15:33:15',fin_inscription='' WHERE hash='0a8bd08d' AND id_abonne='76875'

//Et si je met :
$arg = array('debut_inscription'=>date("Y-m-d H:i:s"),
'fin_inscription'=> 'NULL');
//var_dump :
UPDATE newletters SET debut_inscription='2010-03-01
15:33:15',fin_inscription='NULL' WHERE hash='0a8bd08d' AND
id_abonne='76875'

//code

Merci d'avance

Stéphane

C'est un bug, mais je crains que le corriger amène des effets pervers:
ça peut s'étudier pour la 2.1, mais pour la 2.0.11 ce n'est pas à faire à mon avis.
En attendant, il faut utiliser une fonction plus interne (qui ne fait pas partie de l'interface car trop peu portable), savoir sql_insert qui admet non pas un tableau de couples nom=>valeur en argument, mais deux arguments sous forme de chaîne liste-de-nom liste-de valeurs qu'elle insère dans une requête INSERT sans rien modifier.

Committo,Ergo:Sum

Bonjour et merci de ta réponse.

J'ai soulevé un bug hier soir sur le trac de Spip
( http://trac.rezo.net/trac/spip/ticket/1894 ) en proposant un patch
mais effectivement je ne connais pas assez le code de Spip pour savoir
si il n'y a pas d'effet de bord.

Cordialement,

Stéphane

(je viens de m'apercevoir que j'avais répondu en privé sans mettre la
liste en copie)