2 DB Connections innerhalb eines Scripts

xtratz

Gesperrt
HAllo Leute,

anscheinend ist es nicht so einfach möglich eine Verbindung zu 2 unterschiedlichen Datenbanken in einem Script aufzubauen.

Ich habe es so versucht und es klappt nicht, hat jemand ein Tipp ob das überhaupt möglich ist ?!.
PHP:
    // Datenbankparameter für Confixx
  define('CF_DB_HOST', 'localhost'); // eg, localhost - should not be empty for productive servers
  define('CF_DB_BENUTZER', 'xxx');
  define('CF_DB_PASSWORT', 'xxx');
  define('CF_DB_NAME', 'xxx');
  
// Datenbankverbindung für Confixx aufbauen
   $verbindung_db = mysql_connect (CF_DB_HOST, CF_DB_BENUTZER, CF_DB_PASSWORT);
   if (!mysql_select_db (CF_DB_NAME, $verbindung_db))
   {
   die ("Keine Verbindung zur Confixx Datenbank");
   }

   // Datenbankparameter für Sales
  define('_DB_HOST', 'localhost'); // eg, localhost - should not be empty for productive servers
  define('_DB_BENUTZER', 'xxx');
  define('_DB_PASSWORT', 'xxx');
  define('_DB_NAME', 'xxx');
  
// Datenbankverbindung für Sales aufbauen
   $verbindung_db_2 = mysql_connect (_DB_HOST, _DB_BENUTZER, _DB_PASSWORT);
   if (!mysql_select_db (_DB_NAME, $verbindung_db_2))
   {
   die ("Keine Verbindung zur Confixx Datenbank");
   }

Gruss
 
Wenn ich eine Abfrage starte welche die erste DB Verbindung betrifft, dann kommt die Meldung das die entsprechende Tabelle nicht gefunden wird.

Verbindung ist aber da denn wenn ich die Reihenfolge tausche dann klappts.


Gruss
 
Hat vielleicht jemand einen orschlag wie das aussehen muss wenn man mehrere DBs auf dem gleichen Server Konnektiert. ?!.

Habe schon 3 Stunden gegooglet und nix gefunden.

Von der LogiG her ists ja klar.
Wenn ich 2 Verbindungen herstelle dann weis ja die Abfrage nicht von welcher DB ich nun die Infos haben möchte.
Aber das muss doch irgendiwe funktionieren oder nicht ?!.
Ich meine das man 2 DB Verbindungen herstellen kann.

Oder kann ich vielleicht bein der Abfrage einen Wert angeben der bestimmt von welcher DB gelesen werden soll?!.

Gruss
 
Zuletzt bearbeitet:
Eigentlich sollte es kein Problem sein mit 2 verschiedenen Datenbankverbindungen in einem Script zu hantieren.
Das Portal was ich hier auf der Arbeit gebastelt hab jongliert auch mit 2 Datenbank gleichzeitig da einige Daten lokal in MySQL gespeichert werden und andere Daten aus einer MSSQL auf einem anderen Server kommen.

Du kannst doch auch bei mysql_query() die Verbindungsresource uebergeben. So weiss dann die Query auch von welcher Verbindung Du die Daten willst.
 
Zuletzt bearbeitet:
OK ich habe jetzt einen Ansatz gefunden.
Ich gebe jetzt bei mysql_query() die DB mit an von der ich die Daten haben möchte.

Wahrscheinlich sitze ich schon zu lange vor dem Rechner aber ich bekomme einfach keine vernünftige Abfrage hin.

Fehlermeldung: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\x\includes\application_top.php on line 95
Table 'x.kunden' doesn't exist

Code:
PHP:
   /* Erstellt Connect zu Datenbank her */
  $handle_db1 = mysql_connect("localhost","xxx","xxx");
   mysql_select_db("confixx",$handle_db1);
  $query = "SELECT * FROM kunden where kunde = 'web3'"; 
  $which = $handle_db1;
  $result = mysql_query($query,$which); 
  $test = mysql_fetch_array($result)or die(mysql_error());
  
   echo $test['kunde'];

Was könnte denn da falsch sein.
Die Tabelle gibt es.

Und wenn ich die Abfrage über die erste mache dann geht es auch.
Nur leider nicht wenn die ABfrage unterhalb der ersten ist.

Komisch Komisch.
 
Also es geht definitiv nicht.
Nach einer ganzen NAcht hab ich keinen Nerv mehr.
Ich poste mal den komplettes Code.
Vielleicht hat ja jemand ne Idee an was es scheitert.
Die Funktion tep_db_connect() war vorgegeben und baut die erste Verbindung zur DB auf.
Wenn ich jetzt davor meine zweite Verbindung setze dann klappt alles.
Setze ich aber meinen eigenen Code danach ein dann werden alle Abfragen von tep_db_connect() nicht gefunden.

Hier der Code im auszuführenden Script:
PHP:
 // make a connection to the database... now
  tep_db_connect() or die('Unable to connect to database server!');
  
  

     /* Erstellt Connect zu Datenbank her */
  $handle_db1 = mysql_connect("localhost","xxx","xxx");
   mysql_select_db("confixx",$handle_db1);
   
    
   
  $query = "SELECT * FROM kunden where kunde = 'web3'"; 
  $which = $handle_db1;
  $result = mysql_query($query,$which)or die(mysql_error()); 
  $meta_tags = mysql_fetch_array($result);

  
   echo $meta_tags['kunde'];

Hier mal der Code der die Funktion tep_db_connect() erzeugt:
PHP:
   function tep_db_connect($server = DB_SERVER, $username = DB_SERVER_USERNAME, $password = DB_SERVER_PASSWORD, $database = DB_DATABASE, $link = 'db_link') {
    global $$link;

    if (USE_PCONNECT == 'true') {
      $$link = mysql_pconnect($server, $username, $password);
    } else {
      $$link = mysql_connect($server, $username, $password);
    }

    if ($$link) mysql_select_db($database);

    return $$link;
  }

  function tep_db_close($link = 'db_link') {
    global $$link;

    return mysql_close($$link);
  }
 
Zurück