[spip-dev] Conflit entre plusieurs bases ...

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 ?

-- Fil

> 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 (??)
2) le nom de la base.

Je commite quelques modifs, peux-tu me dire si c'est bon ?

-- Fil

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 ... :wink:

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 ... :wink:
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

Par contre, y a-t'il une logique dans l'usage différent de 'global'
pour '$spip_mysql_db' et '$GLOBALS['table_prefix']' ?

Oui : c'est pour marquer le changement d'année.

-- Fil

Par contre, y a-t'il une logique dans l'usage différent de 'global'
pour '$spip_mysql_db' et '$GLOBALS['table_prefix']' ?

Oui : c'est pour marquer le changement d'année.

OK :wink:

-Nicolas