petite question connexion mysql

Eléphant du PHP | 259 Messages

09 juin 2007, 12:18

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
Modifié en dernier par yuuzhantar le 09 juin 2007, 13:09, modifié 1 fois.
l'hébergeur gratuit que j'utilisais: http://www.freeheberg.com (pas de limitte de débit, BP, 1à10Go, bdd mysql illimitées )
mainteant je suis chez OVH, payant mais plus adapté à de gros sites

Mammouth du PHP | 1776 Messages

09 juin 2007, 12:20

Et si tu essayais d'éxecuter le code ?... :roll:

Eléphant du PHP | 259 Messages

09 juin 2007, 12:25

oui mais mes bdd ne sont pas encore prêtes

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

++
l'hébergeur gratuit que j'utilisais: http://www.freeheberg.com (pas de limitte de débit, BP, 1à10Go, bdd mysql illimitées )
mainteant je suis chez OVH, payant mais plus adapté à de gros sites

Mammouth du PHP | 991 Messages

09 juin 2007, 12:47

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
DevOps, Symfony4, Hoa

Eléphant du PHP | 259 Messages

09 juin 2007, 12:48

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
l'hébergeur gratuit que j'utilisais: http://www.freeheberg.com (pas de limitte de débit, BP, 1à10Go, bdd mysql illimitées )
mainteant je suis chez OVH, payant mais plus adapté à de gros sites

Eléphant du PHP | 332 Messages

09 juin 2007, 13:06

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.

Eléphant du PHP | 259 Messages

09 juin 2007, 13:10

merci bien
l'hébergeur gratuit que j'utilisais: http://www.freeheberg.com (pas de limitte de débit, BP, 1à10Go, bdd mysql illimitées )
mainteant je suis chez OVH, payant mais plus adapté à de gros sites

Eléphant du PHP | 259 Messages

09 juin 2007, 16:27

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))
l'hébergeur gratuit que j'utilisais: http://www.freeheberg.com (pas de limitte de débit, BP, 1à10Go, bdd mysql illimitées )
mainteant je suis chez OVH, payant mais plus adapté à de gros sites

ViPHP
ViPHP | 2144 Messages

09 juin 2007, 16:35

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.

Eléphant du PHP | 259 Messages

09 juin 2007, 16:38

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 ?
l'hébergeur gratuit que j'utilisais: http://www.freeheberg.com (pas de limitte de débit, BP, 1à10Go, bdd mysql illimitées )
mainteant je suis chez OVH, payant mais plus adapté à de gros sites

Eléphant du PHP | 259 Messages

09 juin 2007, 22:17

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
l'hébergeur gratuit que j'utilisais: http://www.freeheberg.com (pas de limitte de débit, BP, 1à10Go, bdd mysql illimitées )
mainteant je suis chez OVH, payant mais plus adapté à de gros sites

ViPHP
ViPHP | 5924 Messages

09 juin 2007, 23:19

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

ViPHP
ViPHP | 2144 Messages

10 juin 2007, 01:29

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.

Eléphant du PHP | 259 Messages

10 juin 2007, 09:08

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
l'hébergeur gratuit que j'utilisais: http://www.freeheberg.com (pas de limitte de débit, BP, 1à10Go, bdd mysql illimitées )
mainteant je suis chez OVH, payant mais plus adapté à de gros sites

ViPHP
ViPHP | 5924 Messages

10 juin 2007, 13:20

Tu peux utiliser mysql_db_query() ou bien faire mysql_query() en utilisant une synataxe de la forme DATABASE.TABLE