gerer 2 bases mysql en PHP? - PHP - Programmation
Marsh Posté le 21-01-2004 à 12:50:08
jamais testé, mais ce sont deux variables differentes, donc je pense pas que le probleme soit au niveau Php mais plus du serveur apache qui refuse plus d'une connection à une base
sans doute à voir dans la configu du serveur... (tout ça n'est que supposition)
Marsh Posté le 21-01-2004 à 13:26:16
uriel a écrit : jamais testé, mais ce sont deux variables differentes, donc je pense pas que le probleme soit au niveau Php mais plus du serveur apache qui refuse plus d'une connection à une base |
je te remercie j'irai voir
sinon si d'autres personnes peuvent aussi m'éclairicir encore je suis prenneur
Marsh Posté le 21-01-2004 à 13:31:15
en fait ce qui 'interesserai de savoir c'est quelle est la methode la plus propre pour travailler sur plusieurs bases mysql dans des meme scripts php.
et en effet peut etre qu'il faut voir la configuration d'apache , si quelqu'un c'est plus de hcose a se sujet?
mais je préfèrerai avoir une solution un peu plus universel
une solution qui marcherai pour n'importe quele configuration apache (configuration standard)
Marsh Posté le 21-01-2004 à 16:17:22
saxgard a écrit : ...
|
Si, normalement c'est ça
Marsh Posté le 21-01-2004 à 16:50:05
mrbebert a écrit : Si, normalement c'est ça |
quand je fais ca
bin ca garde en memoire seulement la dernière connection établi
ca viendrais d'autres chose?
voila ma fonction de connection
Code :
|
moi aussi je pensais que je pouvais faire tous mes connect en début de script et ensuite pouvoir travailler sur chaque connections avce mysql_query en utilisant l'identifiant de la connection.
mais je comprend pas pourquoi il me garde seulement la derniere connection effectué
par consequent pour:
Code :
|
je peux seulement travailler sur la base 2
comme si la 1 n'était pas prise en compte.
Ca m'arrangerais que ca marche , ca m'évietrais de faire plusieurs connections dans le script a cahque fois que je veux passer par une base.
Marsh Posté le 21-01-2004 à 17:08:04
dixit le manuel :
Code :
|
Marsh Posté le 21-01-2004 à 17:13:59
naceroth a écrit : dixit le manuel :
|
oui mais la c'est sur les connections concernant une meme base de données
la il n'ya pas de probleme je peu avoir plusieurs connectiosn sur la meme base en meme temps
enfin du moin c'est ce que je comprend sur la limite maximal
cela dit tu m'ouvre une piste peut etre en effet que les connection persistante pause un probleme pour les connectiosn multiples dans un meme script
Marsh Posté le 21-01-2004 à 17:16:55
bon je viens d'essayer ca ne change rien pesrisnat ou non persistant ca ne marche pas
Marsh Posté le 21-01-2004 à 18:12:55
Ca y est, je sais
Si tu utilises les mêmes paramètres pour le mysql_connect(), il reprends effectivement la même connexion. D'où problème quand tu veux utiliser 2 bases différentes
Essaies de changer le serveur entre les 2 connexions (par exemple, 'localhost' et '127.0.0.1' pour faire croire qu'il s'agit de 2 serveurs différents)
Ou alors, tu peux préfixer les noms des tables dans les requêtes (SELECT * FROM table ==> SELECT * FROM base.table) pour ne pas dépendre du mysql_select_db() mais bon, spa génial comme solution
Marsh Posté le 21-01-2004 à 18:48:43
Donc, si je captes bien ce que tu veux faire, c'est te connecter sur 2 db d'un même serveur ?
En persistant, ça ne fonctionnera pas en utilisant les mêmes paramètres. Par contre en "normal" (php 4.2.0+) tu peux utiliser l'argument new link pour contraindre php à créer une nouvelle connection même si une autre existe déjà :
Code :
|
(dit de mémoire, mais il me semble que la syntaxe est bonne )
Marsh Posté le 22-01-2004 à 13:44:52
naceroth a écrit : Donc, si je captes bien ce que tu veux faire, c'est te connecter sur 2 db d'un même serveur ?
|
ah je te remercie faut queje fasse l'essai mais ca me parait etre la bonne solution.
Puisque j'y suis peut tu me dire ce qu'il est préférable d'utiliser , une connection persistante ou non?
merci mrbebert aussi
Marsh Posté le 22-01-2004 à 14:00:27
saxgard a écrit : |
RTFM =>
http://fr2.php.net/manual/en/featu [...] ctions.php
Marsh Posté le 22-01-2004 à 14:53:26
naceroth a écrit : Donc, si je captes bien ce que tu veux faire, c'est te connecter sur 2 db d'un même serveur ?
|
bon je viens d'essayer, ca ne marche pas , pourtant la solution me paraissait la.
y a t-il une difference entre la version php 4.2.0 et 4.2.0+?
peut etre ca serait juste un pb de version de php?
Marsh Posté le 22-01-2004 à 15:05:24
saxgard a écrit : |
A priori non puisque ce parametre est justement apparu dans la version 4.2.0 => "Note: The new_link parameter became available in PHP 4.2.0" (http://fr.php.net/manual/en/function.mysql-connect.php)
Marsh Posté le 22-01-2004 à 15:22:20
impulse a écrit : |
arf alors je ne voix plus d'ou vient mon pb
Marsh Posté le 22-01-2004 à 18:43:02
saxgard a écrit : |
C'est la bonne solution, je viens de faire le test et il se connecte bien à la db sur les 2 connections
Donc, je présume que c'est un problème de version oui (encore qu'il devrait y avoir un message d'erreur si tu mettais un paramètre exédentaire )
Marsh Posté le 23-01-2004 à 09:30:15
naceroth a écrit : |
donc ta pu te connecter a 2 bases mysql differente sur un meme script php?
bon bin faut que je regarde mon pb de plus près c'est peut etre un pb de config
Marsh Posté le 23-01-2004 à 17:05:29
Ouaip, voilà le code que j'ai utilisé :
Code :
|
(charge étant la copie parfaite de DB_NAME, mais qui contient plus d'enregistrements, pour les tests de perfs )
qui me donne comme réponse
Code :
|
Marsh Posté le 23-01-2004 à 21:45:55
J'ai pas tout lu, mais normal que la connexion 1 remplace la 2, la variable $result est la même ........
Marsh Posté le 26-01-2004 à 09:02:04
letouriste a écrit : J'ai pas tout lu, mais normal que la connexion 1 remplace la 2, la variable $result est la même ........ |
Ah oui, c'est ça. Je vois jamais ce genre d'erreur.
C'est pas la connexion qui est remplacée mais seulement la valeur de $result.
Marsh Posté le 26-01-2004 à 09:28:59
impulse a écrit : |
ce qui veut dire quoi? que c pas bon alors?
Marsh Posté le 26-01-2004 à 10:09:57
saxgard a écrit : |
Tu ecrases la valeur de $result donc forcement tu n'as que le dernier resultat (celui de la 2eme requete). Utilise 2 variables differentes pour recuperer les resultats de tes requetes.
Code :
|
Marsh Posté le 26-01-2004 à 10:28:52
impulse a écrit :
|
ah ok
non ca c ok c ce que je faisai deja
par contre je sais pas si ca une importance tu met :
Code :
|
moi j'aurais mis:
Code :
|
ca a une importance?
Marsh Posté le 26-01-2004 à 10:38:44
saxgard a écrit : |
Moi je ne fais rien du tout, tu confonds avec naceroth. Je te conseille de copier coller son code et de voir si ça marche ou pas.
Marsh Posté le 26-01-2004 à 10:50:47
impulse a écrit : |
oui pardon me suis trompé , je suis mal reveillé
j'ai les yeux collé encore
Marsh Posté le 26-01-2004 à 16:59:07
Pas obligé de mettre le true pour le premier lien puisque tu ne peux pas remplacer une connexion qui n'a pas encore été ouverte
(mais pour le repos de ton esprit, tu peux le mettre, ça change rien )
Marsh Posté le 27-01-2004 à 09:12:00
naceroth a écrit : Pas obligé de mettre le true pour le premier lien puisque tu ne peux pas remplacer une connexion qui n'a pas encore été ouverte |
bon bin cela dit alors je sais toujours pas pourquoi ca marche pas
Marsh Posté le 27-01-2004 à 09:50:13
C'est normal que ça marche pas : mysql_select_db($BASE) fonctionne sur la connexion courante, je veux dire par là qu'elle ne peut sélectionner qu'une bd à la fois, ça dépend pas de la connexion ouverte.
Moi perso, j'utilise la bibliothèque PEAR pour faire une connexion générique, et avec ça, je pense que ça devrai marcher. Voici mon code de la fonction qui ouvre une connexion générique (pas dépendant, en théorie, du sgbd) :
Code :
|
Marsh Posté le 27-01-2004 à 09:51:24
Voici les valeurs de mes paramètres :
Code :
|
Marsh Posté le 27-01-2004 à 10:06:01
rufo a écrit : C'est normal que ça marche pas : mysql_select_db($BASE) fonctionne sur la connexion courante, je veux dire par là qu'elle ne peut sélectionner qu'une bd à la fois, ça dépend pas de la connexion ouverte.
|
ah je ne connais pas cette biblioteheque
on la trouve par defaut sur php 4.2.0?
es-ce que cette bibliotheque permet un acces natif sur une base distante sans passé par odbc?
de plus avce mysql_select_db($BASE) es-ce grave de faire a cahque fois une nouvelle connection quand on change de base sur un meme script?
peut-il y avoir un pb? es-ce bcp plus lent? es-ce d ela mauvaise programmation?
PS: je suis encore un peu novice en php
Marsh Posté le 27-01-2004 à 10:19:22
Moi, j'utilise easyphp 1.6 (sous Win). Je sais plus la version de Php, mais PEAR y est de base. Par contre, faut penser à faire un include_once("pear.php" ).
Sinon, voici la fct pour closer la connexion :
Code :
|
pear permet de manipuler pas mal de bd : mysql, odbc, sql server, oracle, etc.
Marsh Posté le 27-01-2004 à 10:20:36
Pour faire une requête sql :
Code :
|
Marsh Posté le 27-01-2004 à 10:25:48
rufo a écrit : Moi, j'utilise easyphp 1.6 (sous Win). Je sais plus la version de Php, mais PEAR y est de base. Par contre, faut penser à faire un include_once("pear.php" ).
|
ou on peu trouver tte la bibiotehque de pear expliqué? (en francais si possible)
quels sont les avnatges de PEAR a part la multiconnection?
Marsh Posté le 27-01-2004 à 10:28:57
saxgard a écrit : |
PEAR c'est beaucoup plus que ca, et il y a une tres bonne doc en francais
http://pear.php.net/
en french : http://pear.php.net/manual/fr/
Marsh Posté le 27-01-2004 à 10:31:29
uriel a écrit : |
tout à fait. pear ne se limite pas aux bd. J'ai trouvé sur le site tout un tas de biblio pour faire des graphiques, du calcul, se logger, etc.
Marsh Posté le 27-01-2004 à 10:34:58
Au fait, moi, quand je me suis mis à PHP, j'ai acheté un gros pavé : "PHP, la bible". C'est un super bouquin qui explique très bien les fonctions proposées dans php et qui regorge d'exemples (c'est de là que j'ai pompé ma fct pour ouvrir une connexion générique, même si par la suite, je l'ai un peu modifiée)
Marsh Posté le 27-01-2004 à 10:56:12
Hum. Le probleme avec PEAR c'est que ça ameliore pas les perfs vu la quantite de code en plus a parser et interpreter. C'est bien beau l'abastraction pour les DB par exemple mais apres faut voir si on en a vraiment besoin...
Perso j'utilise presque toujours les fonctions mysql car je sais que ce sera mysql qui sera utilisé de toute façon.
Marsh Posté le 21-01-2004 à 12:34:55
voila
j'ai besoin de faire des echnages de données entre 2 bases mysql sur un intranet
est on obligé de faire?:
on ne peut pas faire?:
on dirai que conn1 efface conn2! ( ca me parait logique mais bon
note: connect_base_1() <-- fonction qui gere la connection a la base1
y a t-il le moindre pb ou risuqe de lancer 2 connection sur le meme script PHP?
deplus je ne fais pas de mysql_close puisque j'utilise une connection persistante (pconnect)
es-ce que je resonne mal? y a t-il un autre moyen?
merci d'avance
Message édité par saxgard le 21-01-2004 à 12:36:18