Hello,
tout d'abord, bonne année à toutes et tous !
Il faudrait donc toujours préciser la base utilisée dans les
requêtes faites par SPIP
D'après la doc :
resource mysql_query ( string query [, resource link_identifier [,
int result_mode]])
C'est pas link_identifier qu'il faudrait stocker à la première
connexion, et instancier dans les connexions suivantes ?
OK, il faut sans doute conserver les deux choses :
1) le lien, au cas où on se connecte sur des bases différentes, sur
des *serveurs* différents, les bases portant le même nom (??)
Ouh la la, j'avais pas pensé à ça, moi ... 
2) le nom de la base.
Là c'est sûr.
A priori, PHP utilise un unique identifiant de connection qu'il
modifie à chaque connect ou select_db, donc conserver le
'link_identifier' ne sert peut-être pas à grand chose.
Il faudrait tester tout de même.
Je commite quelques modifs, peux-tu me dire si c'est bon ?
function traite_query($query) {
+ global $spip_mysql_db;
// changer les noms des tables ($table_prefix)
if (eregi('[[:space:]](VALUES|WHERE)[[:space:]].*$', $query, $regs)) {
$suite = $regs[0];
$query = substr($query, 0, -strlen($suite));
}
- $query = ereg_replace('([[:space:],])spip_', '\1'.$GLOBALS['table_prefix'].'_', $query) . $suite;
+ $query = ereg_replace('([[:space:],])spip_', '\1'.$spip_mysql_db.'.'.$GLOBALS['table_prefix'].'_', $query) . $suite;
return $query;
}
Cela fait ce que je proposais, donc ça doit être bon ... 
Je testerais demain sur le site où j'avais le problème.
Par contre, y a-t'il une logique dans l'usage différent de 'global'
pour '$spip_mysql_db' et '$GLOBALS['table_prefix']' ?
-Nicolas