Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2699 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  requete en PHP/MySQL sur deux base differentes ...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

requete en PHP/MySQL sur deux base differentes ...

n°694511
tibrol
Posté le 07-04-2004 à 11:19:34  profilanswer
 

Voila, je bosse sur un projet qui possède deux bases de données différentes et je dois créer une requête faisant le lien entre une table de chaque base.
 
Quelqu'un a-t-il une solution pour eviter d'exploiter les résulats sous php et tout faire en requete mysql ? MERCI

mood
Publicité
Posté le 07-04-2004 à 11:19:34  profilanswer
 

n°694514
mrbebert
Posté le 07-04-2004 à 11:28:15  profilanswer
 

Elles sont sur le même serveur ?
Si oui, tu peux préfixer le nom de la table par le nom de la base :
SELECT * FROM table1, nom_base.table2 WHERE ...
 
(sous réserve que le user ait bien les droits en lecture sur cette base)


Message édité par mrbebert le 07-04-2004 à 11:28:54
n°694515
tibrol
Posté le 07-04-2004 à 11:30:57  profilanswer
 

Tu es sur de ce que tu avance ou pense que c'est ça ?
Parce que dans ce cas là, comment fais tu les connexions au deux differentes base ???

n°694518
dropsy
et bonne chance surtout...
Posté le 07-04-2004 à 11:31:47  profilanswer
 

il faut que ton user ait les droits suffisant sur chacune des bases ;)

n°694522
tibrol
Posté le 07-04-2004 à 11:37:04  profilanswer
 

dites moi alors si la syntaxe est bonne :
 
SELECT * FROM base1.table1, base2.table2
WHERE base1.table1.id= base.table2.id
 
Comment on se connecte dans ce cas la ?

n°694598
mrbebert
Posté le 07-04-2004 à 13:33:29  profilanswer
 

tibrol a écrit :

Tu es sur de ce que tu avance ou pense que c'est ça ?
Parce que dans ce cas là, comment fais tu les connexions au deux differentes base ???

J'ai précisé que c'était dans le cas où les 2 bases étaient situées sur le même serveur (et que tu avait les droits au moins en lecture sur ces 2 bases).
Dans ce cas, tu te connectes normalement, une seule fois.
 
Si les bases sont sur 2 serveurs différents, je pense que ca va pas être possible [:figti]  
(même s'il me semble que ce genre de fonctionalité existe sur d'autres SGBD)

n°694606
mrbebert
Posté le 07-04-2004 à 13:49:53  profilanswer
 

tibrol a écrit :

dites moi alors si la syntaxe est bonne :
 
SELECT * FROM base1.table1, base2.table2
WHERE base1.table1.id= base.table2.id
 
Comment on se connecte dans ce cas la ?

A priori, le préfixe du nom de la base, c'est uniquement dans le "FROM" :
SELECT * FROM base1.table1, base2.table2
WHERE table1.id = table2.id
 
Si les 2 tables ont le même nom, tu peux en renommer une avec AS :
SELECT * FROM base1.table AS tb1, base2.table AS tb2
WHERE t1.id = t2.id

n°694651
tibrol
Posté le 07-04-2004 à 14:31:26  profilanswer
 

Nein, ça ne fonctionne pas... il ne veux pas faire la requete...

n°694662
tibrol
Posté le 07-04-2004 à 14:50:50  profilanswer
 

OK C COOL ça fonctionne !
 
Pour ceux que ça interresse :
 
$host = "localhost";
$utilisateur = "###";
$passwd = "";
$passwd = "#########";
$nom_base1 = "###";
$nom_base2 = "###";
 
$db = mysql_connect( $host, $utilisateur, $passwd) or die ("Erreur de connexion au serveur" );
 
mysql_select_db ( $nom_base1 , $db) or die ("Erreur de connexion a la premiere base de donnees" );
 
mysql_select_db ( $nom_base2 , $db) or die ("Erreur de connexion a la premiere base de donnees" );
 
 
$res = mysql_query("select P.nomMembre from $nom_base1.Membre P, $nom_base2.mrbs_entry M WHERE P.login = M.create_by" ) or die("Je ne peux faire ta requete" );
 
 

n°694678
mrbebert
Posté le 07-04-2004 à 15:06:16  profilanswer
 

C'est inutile de faire 2 mysql_select_db() à la suite :)  
 
(en fait, compte tenu de la requête qui est exécutée, aucun mysql_select_db() n'est nécessaire puisque tu précises le nom de la base pour chacune des tables utilisées)

mood
Publicité
Posté le 07-04-2004 à 15:06:16  profilanswer
 

n°694819
tibrol
Posté le 07-04-2004 à 16:46:07  profilanswer
 

hein hein ! ok merci

n°2169307
sniperdc
Posté le 28-12-2012 à 21:08:22  profilanswer
 

Super les gas merci pour votre aide depuis tout fonctionne niquel  :love:  
 
Cependant j'ai une petite précision à apporter à tout ça.
 
Je code en PHP sur un server LAMP.
Ma version de php est la 5.3.3 et apache 2.2.3.
 
Voici l'extrait de mon code avec des nom de champs simplifié


<?php
#Fichier contenant les paramètres effectifs des db
require('inc.db.php');
 
#Connexion à la base de données 1
$db = mysql_connect("$host1", "$user1", "$pwd1" ) or die('Erreur de connexion '.mysql_error());  
 
#Connexion à la base de données 2
$db = mysql_connect("$host2", "$user2", "$pwd2" ) or die('Erreur de connexion '.mysql_error());  
 
#SQL
$sql = "SELECT  
   $base1.client.c_id AS `id_client`,
   $base1.client.c_nom AS `nom`,
   $base2.clients_echeancier.id AS `id_ech`,
   $base2.clients_echeancier.libelle AS `libelle`
  FROM  
   $base1.client, $base412.clients_echeancier";
 
#Execution
$exe = mysql_query($sql) or die('Erreur d\'execution ligne numéro '.$lignum.': fichier '.$filename.''.mysql_error());


 
Précision très importante :  
dans le FROM la syntaxe ne doit pas être en backtick pour que cela fonctionne  
 
En somme :
Correct : FROM $base1.client, $base412.clients_echeancier
 
Incorrecte : FROM `$base1.client`, `$base412.clients_echeancier`

n°2169481
CyberDenix
Posté le 31-12-2012 à 22:25:08  profilanswer
 

Joli déterrage.
 
Est-ce bien utile de faire deux mysql_connect, et donc d'écraser le contenu de db ?


---------------
Directeur Technique (CTO)
n°2169550
tsoko
Posté le 02-01-2013 à 10:16:10  profilanswer
 

Effectivement, c'est étrange de travailler sur 2 base de données??
C'est peut-être l’importation d'anciennes données pour l'injecter dans la nouvelle :)


---------------
Besoin d'aide pour votre projet? agence web
n°2169668
CyberDenix
Posté le 03-01-2013 à 00:53:11  profilanswer
 

C'est assez fréquent quand on fait du sharding sur de gros volumes de données, mais vu le niveau de code que j'ai sous les yeux, ça m'étonnerait que ça soit pour ces raisons là !


---------------
Directeur Technique (CTO)

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  requete en PHP/MySQL sur deux base differentes ...

 

Sujets relatifs
Temporisation pour base de donnéePhp et bdd Access distante
passer 1 variable PHP à javascript sans utiliser echo ou autre?[SQL] [Résolu] Requete avec COUNT et GROUP BY
php_xslt - C est quoi?Quel est le port par default du serveur apache dans easy php
[PHP] Liste des variables globales.[PHP] Peut on passer des tableau dans $_SESSION ?
[php] include fichier xml/xslrecherche sur plusieurs tables MySQL
Plus de sujets relatifs à : requete en PHP/MySQL sur deux base differentes ...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR