Page 1 sur 2

petite question connexion mysql

Posté : 09 juin 2007, 12:18
par yuuzhantar
bonjour

je voulais savoir si on pouvait avoir plusieurs connexion mysql simultannées dans une même page

je m'explique
j'ai besoin de plusieurs bases de données pour mon site
et dans mes scripts, que je suis en train de remanier, je vais devoir bosser sur plusieurs bdd en même temps par exemple :
$db = mysql_connect('localhost', 'login', 'password');
mysql_select_db('base_1',$db);  

$bis = mysql_connect('localhost', 'login', 'password');  // 1
mysql_select_db('base_2',$bis); 

mysql_query("select machin truc",$db);
mysql_query("insert into bidule machin",$bis);
voila

merci

Posté : 09 juin 2007, 12:20
par DocType
Et si tu essayais d'éxecuter le code ?... :roll:

Posté : 09 juin 2007, 12:25
par yuuzhantar
oui mais mes bdd ne sont pas encore prêtes

donc je demande a l'avance avant de tout changer dans mes scripts

++

Posté : 09 juin 2007, 12:47
par thehawk
Quel intérêt de plusieurs connexion a la même base ... mis a part une surcharge inutile du serveur ...
enfin oui c'est possible mais déconseiller sauf si tu doit atteindre une autre base alors la ...

@+ thehawk

Posté : 09 juin 2007, 12:48
par yuuzhantar
nan c pa la meme base de données

c des bases de données différentes

g oublié de changer dans l'exemple le copier-coller mais ce sont des bases de données différentes

Posté : 09 juin 2007, 13:06
par Henri
Il est effectivement tout à fait possible d'avoir deux connexions à la base de données simultanément.

Et contrairement à ce qui est dit, cela peut être parfaitement justifié, notamment avec des requêtes imbriquées dans une boucle qui elle même est le résultat d'une requête. Il vaut mieux parfois avoir deux connexions avec des requêtes simples qu'une seule connexion avec une requête avec des clauses WHERE à ne plus finir.

Quant à la surcharge de base, n'exagérons pas : les charges du serveur dues à l'ouverture d'une connexion sont négligeables par rapport aux charges dues aux requêtes.

Posté : 09 juin 2007, 13:10
par yuuzhantar
merci bien

Posté : 09 juin 2007, 16:27
par yuuzhantar
aie aie aie

sa marche pas
<?

$dbmembres=mysql_connect('xxxxxxxxxxxxx)or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
mysql_select_db('yuuzhantar_membres',$dbmembres)or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

$dbsite=mysql_connect(xxxxxxxxxxxxxxx)or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
mysql_select_db('yuuzhantar_site',$dbsite)or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

$dbclics=mysql_connect(xxxxxxxxxxxxxxxxxxx)or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
mysql_select_db('yuuzhantar_clics',$dbclics)or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

$dbjeux=mysql_connect(xxxxxxxx)or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
mysql_select_db('yuuzhantar_jeux',$dbjeux)or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

$rech1=mysql_query("select page_nom from fc_pages",$dbsite);
while($rech=mysql_fetch_assoc($rech1))
{
$ok[$count]=$rech['page_nom'];
$count=$count+1;
}
?>
mais je ne vois pas qu'elle est vraiment l'erreur
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in D:\FTP\www\clixxxxxxxxxxxxxxxxxxxxxxxxxxx.php on line 16
la ligne 16 est celle ci
while($rech=mysql_fetch_assoc($rech1))

Posté : 09 juin 2007, 16:35
par iclo
Ta requête n'a pas été exécutée correctement et donc il est impossible de lire le résultat de celle-ci.
Teste la dans phpMyAdmin, ou bien ajoute un or die(mysql_error()), juste après le mysql_query pour voir ce qu'il raconte.

Posté : 09 juin 2007, 16:38
par yuuzhantar
en effet il n'a pas fait la requête:
Erreur SQL !

Table 'yuuzhantar_jeux.fc_pages' doesn't exist
or moi je veux que la requête s'execute avec la connexion a $dbsite et non pas $dbjeux

comment faire ?

Posté : 09 juin 2007, 22:17
par yuuzhantar
la table fc_pages existe bien sur la base de données yuuzhantar_site

sa vient du problème de connection simultannées à PLUSIEURS bases de données

pourriez vous m'aider ?

merci

Posté : 09 juin 2007, 23:19
par Sékiltoyai
Et contrairement à ce qui est dit, cela peut être parfaitement justifié, notamment avec des requêtes imbriquées dans une boucle qui elle même est le résultat d'une requête. Il vaut mieux parfois avoir deux connexions avec des requêtes simples qu'une seule connexion avec une requête avec des clauses WHERE à ne plus finir.
Je ne vois pas ce que ca change d'utiliser plusieurs connexions. Ce que tu dis, ca se fait très bien avec une seule connexion. Et ensuite, désolé de te contredire, une seule requète est très souvent mieux que plusieurs. Le serveur SQL fait des optimisations que ne fait pas PHP.

Enfin, pour ton problème, les bases sont toutes sur le même serveur, non ? Si c'est le cas, il faut utiliser une seule connexion...

Posté : 10 juin 2007, 01:29
par iclo
Et contrairement à ce qui est dit, cela peut être parfaitement justifié, notamment avec des requêtes imbriquées dans une boucle qui elle même est le résultat d'une requête. Il vaut mieux parfois avoir deux connexions avec des requêtes simples qu'une seule connexion avec une requête avec des clauses WHERE à ne plus finir.
Je ne vois pas ce que ca change d'utiliser plusieurs connexions. Ce que tu dis, ca se fait très bien avec une seule connexion. Et ensuite, désolé de te contredire, une seule requète est très souvent mieux que plusieurs. Le serveur SQL fait des optimisations que ne fait pas PHP.

Enfin, pour ton problème, les bases sont toutes sur le même serveur, non ? Si c'est le cas, il faut utiliser une seule connexion...
C'est toujours une question de contexte: de ce qu'on doit exactement faire sur l'ensemble de ces données, etc, etc...
Le problème est assez similaire à celui de savoir dans quelle mesure on doit avoir plusieurs bases de données de tailles raisonnables, ou une seule.

Posté : 10 juin 2007, 09:08
par yuuzhantar
salut

merci de vos réponses

en effet les bdd sont sur le même serveur, et comme vous l'avez dit, je préfère plusieurs bdd raisonables qu'une très grosse, c'est pourquoi je l'ai coupé en plusieurs

mais alors pour mes requêtes sql, comment puis-je faire pour par exemple

faire un select dans la bdd 1

puis juste après un insert dans la bdd 2

...

pour sauter d'une bdd à l'autre
avec une ou plusieurs connexions ?

merci

Posté : 10 juin 2007, 13:20
par Sékiltoyai
Tu peux utiliser mysql_db_query() ou bien faire mysql_query() en utilisant une synataxe de la forme DATABASE.TABLE