petite question connexion mysql

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : petite question connexion mysql

par Sékiltoyai » 11 juin 2007, 00:07

Je voulais dire généralement.
C'est à dire qu'une seule connexion est rarement gourmande, alors que plusieurs connexions le sont toujours. Idem pour les requètes...

par Henri » 10 juin 2007, 23:21

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...
Non. Il y a d'abord une réflexion à mener avant de décréter abruptement il faut faire ceci ou il faut faire cela. Chaque problème mérite réflexion et le métier de programmeur consiste justement à essayer d'imaginer d'autres solutions.

D'autre part, le critère efficacité de la base de données est un critère parmi tant d'autres. Un ensemble de requêtes simples et compréhensibles sera peut-être moins optimisé qu'une seule requête avec des jointures dans tous les sens (et encore cela reste à prouver), mais sera parfois beaucoup plus facile à lire, donc à mettre au point, donc à maintenir. La lisibilité et la maintenabilité du code sont des critères de qualité tout aussi respectables que l'efficacité.

Encore une fois, je répète qu'il n'y a rien de systématique et que tout cela s'étudie au cas par cas.

par Sékiltoyai » 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

par yuuzhantar » 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

par iclo » 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.

par Sékiltoyai » 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...

par yuuzhantar » 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

par yuuzhantar » 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 ?

par iclo » 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.

par yuuzhantar » 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))

par yuuzhantar » 09 juin 2007, 13:10

merci bien

par Henri » 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.

par yuuzhantar » 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

par thehawk » 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

par yuuzhantar » 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

++