2 db Verbindungen

Von: , Frage gestellt am Sa, 20. Okt 2007

Guten Tag liebe Experten,

ich versuche mir nebenbei php zu Gemüte zu führen, wenn mal Zeit da ist.
Im Moment erstell ich eine Homepage die Userdaten aus einer MySQL Tabelle ausliest, klappt auch alles ohne Probleme.

Habe eine config Datei in der die Daten und die Verbindung zu DB aufgebaut wird. Nun habe ich schon seit Jahren ein php Programm für Onlinestats welches eine eigene Datenbank hat. Nun verbind ich mich zu der einen Datenbank um das Profil auszulesen und ganz am Ende zu der 2. um den Besucher zu loggen, falls es mal eine gibt. Vorher wurde das Script in einer reinen HTML Datei eingebunden da bekam ich auch keine Fehlermeldung. Nun hab ich ja 2 Verbindungen, und bekomme immer folgende Fehlermeldung: Notice: Constant SQL_DB already defined in /verzeichnis/datei zeile xx

Was muss man berücksichtigen wenn man 2 oder mehr Verbindungen aufbauen möchte. Es ist der selbe SQL Server, Daten nur ebend eine andere Datenbank.

Für jede Hilfe und Information bin ich sehr Dankbar, danke!
MfG Tobias

9 Antworten zu dieser Frage

  1. Antwort von nach 56 Minuten 0 hilfreich
    Re: 2 db Verbindungen

    Post mal denen CODE

    z.b. funktioniert das für 2 DB's auf dem selben rechner

    $db1=mysql_connect("localhost",$user,$password);
    $db2=mysql_connect("127.0.0.1",$user,$password);
    mysql_select_db($dbname1,$db1);
    mysql_select_db($dbname2,$db2);
    $tables_db1=mysql_query("show tables",$db1);
    $tables_db2=mysql_query("show tables",$db2);
    


    bei mysql_query kannst du die resource mitnehmen.
    Im allgemeinen darf man nur an dieselbe datenbank-host 1 mal connecten .

    um das zu umgehen wären 2 verschiedene (ip , domainname) namen notwendig.
    bei localhost gehts meist wie oben. Ansonsten eben mysql_query [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

    • Antwort von nach einer Stunde 0 hilfreich
      Re^2: 2 db Verbindungen

      immer folgende Fehlermeldung: Notice: Constant SQL_DB already
      defined in /verzeichnis/datei zeile xx
      dazu würd ich gerne wissen wo du das definierst, weil sieht ja aus als ob du 2 mal dieselbe Constante defenierst.

      und was heist config ???

      also benutzt du sowas wie nuke oder so ??

      bissel mehr hintergrund bitte , hilft allen deine Frage zu beantworten

      • Antwort von nach 2 Stunden 0 hilfreich
        Re^3: 2 db Verbindungen

        So also ich habe ein Teil, quasi wie beschrieben, meiner Homepage selber gemacht. Also Profil, News usw. aus der Datenbank auslesen und ausgeben. Dazu benutze ich ein Onlinestats script welches per include eingebunden wird.

        Für meine pers. Einstellungen benutz ich folgende Daten:
        Datei: config.php

        $btdserver="localhost";
        $btdbenutzer="user"; 
        $btdpasswort="pw";
        $btddatenbank="db_1";
        
        MYSQL_CONNECT("".$btdserver."","".$btdbenutzer."","".$btdpasswort."");
        MYSQL_SELECT_DB("".$btddatenbank."")or die (mysql_error());
        

        Diese wird mit
        require_once("config.php");
        eingebunden.

        Nun wie gesagt benutze ich nen Statsscript. Dieses wird so eingebunden:
        include ("phphits.inc.php"); phphitsAddHit(); 

        Die Settings der Configdatei wären:
        define("SQL_HOST", "localhost");
        define("SQL_USER", "user");
        define("SQL_PWD", "password");
        define("SQL_DB", "db_2");
        define("SQL_SHOW_ERRORS", "1");


        phphits.inc.php:
        function dbConnect()
        {
        	if (!($sql_id = @mysql_connect(SQL_HOST, SQL_USER, SQL_PWD)))
        	{
        		return 0;
        	}
        
        	if (!(@mysql_select_db(SQL_DB, $sql_id)))
        	{
        		return 0;
        	}
        	
        	return $sql_id;
        }
        
        function dbRunQuery($sql_id, $sql_query)
        {
        	if (!($sql_result = @mysql_query($sql_query, $sql_id)))
        	{
        		return 0;
        	}
        
        	return $sql_result;
        }
        
        function dbDisconnect($sql_id, $sql_result)
        {
        	@mysql_free_result($sql_result);
        	
        	@mysql_close($sql_id);
        }
        


        Das habe ich nur herraus kopiert, da ich davon nich wirklich die dollste Ahnung habe. Ich hoffe es ist das was ihr haben wolltet an Informationen.

        • Antwort von nach 4 Stunden 0 hilfreich
          Re^4: 2 db Verbindungen

          So also ich habe ein Teil, quasi wie beschrieben, meiner
          Homepage selber gemacht. Also Profil, News usw. aus der
          Datenbank auslesen und ausgeben. Dazu benutze ich ein
          Onlinestats script welches per include eingebunden wird.

          Für meine pers. Einstellungen benutz ich folgende Daten:
          Datei: config.php

          $btdserver="localhost";
          $btdbenutzer="user";
          $btdpasswort="pw";
          $btddatenbank="db_1";
          
          MYSQL_CONNECT("".$btdserver."","".$btdbenutzer."","".$btdpasswort."");
          MYSQL_SELECT_DB("".$btddatenbank."")or die (mysql_error());
          

          Diese wird mit
          require_once("config.php");

          eingebunden.

          Nun wie gesagt benutze ich nen Statsscript. Dieses wird so
          eingebunden:
          include ("phphits.inc.php");
          phphitsAddHit(); 

          Die Settings der Configdatei wären:
          define("SQL_HOST",
          "localhost");
          define("SQL_USER", "user");
          define("SQL_PWD", "password");
          :define("SQL_DB", "db_2");
          
          Dein Fehler sagt : Constant SQL_DB already defined 
          
          also darf dort SQL_DB nicht nocheinmal definiert werden. Konstanten kann man/frau nur einmal festlegen, da es sonst variablen wären :-)
          
          
          
          :define("SQL_SHOW_ERRORS", "1");

          phphits.inc.php:
          function dbConnect()
          {
          	if (!($sql_id = @mysql_connect(SQL_HOST, SQL_USER, SQL_PWD)))
          	{
          		return 0;
          	}
          
          	if (!(@mysql_select_db(SQL_DB, $sql_id)))
          	{
          		return 0;
          	}
          
          	return $sql_id;
          }
          
          function dbRunQuery($sql_id, $sql_query)
          {
          	if (!($sql_result = @mysql_query($sql_query, $sql_id)))
          	{
          		return 0;
          	}
          
          	return $sql_result;
          }
          
          function dbDisconnect($sql_id, $sql_result)
          {
          	@mysql_free_result($sql_result);
          
          	@mysql_close($sql_id);
          }
          


          Das habe ich nur herraus kopiert, da ich davon nich wirklich
          die dollste Ahnung habe. Ich hoffe es ist das was ihr haben
          wolltet an Informationen.
          hmm , nun die gute frage wie löst man dieses problem.
          Du könntest ne 2 Konstante Definieren
          define("SQL_DB2", "db_2");
          dann musst du aber auch alle nachfolgenen functionen ändern oder doppeln. Scheint das du einfach alles irgentwie kopiert hast und nun beim einbinden 2 mal das gleiche definierst.

          sollte es nicht daran liegen versuch halt
          $btdserver="127.0.0.1";
          und schau ob du damit mehr erfolg hast.

          • Antwort von nach 4 Stunden 0 hilfreich
            Re^5: 2 db Verbindungen

            Dank dir für deine Hilfe !!

            Beides solo läuft wunderbar, pack ich beide zusammen: Fehler.
            Das Onlinestatsscript ist riesig aufgebaut. Ich hab dir nur die settings dieses scripts und den Verbindungsaufbau. Desweiteren die Settings und den Verbindungsaufbau meiner db für mein Profil und News.

            Ich hab schon alle Dateien durch geschaut, das einzige wo define benutzt wird ist bei dem onlinescript. Ich werd morgen aber noch mal alle Dateien durch schaun .. vllt hab ich doch etwas übersehen.

            127.0.0.1 funktioniert leider nicht.
            Obwohl diese eig nur die IP des Localhost ist kann ich darauf nicht connecten. Liegt an den Einstellungen am Server.

            Evtl. noch eine Idee was ich testen kann?
            Danke und MfG Tobias

            • Antwort von nach 5 Stunden 0 hilfreich
              Re^6: 2 db Verbindungen

              mach nen test script und schau ob wenigstens da die werte kommen
              z.b.

              <?php
              $db=mysql_connect("localhost","myuser","mypass");
              mysql_select_db("acms",$db);
              $tables_db1=mysql_query("select name from clans where idx=1",$db);
              var_dump($tables_db1);
              mysql_select_db("albus",$db);
              $tables_db2=mysql_query("select titel from lang where idx=1",$db);
              var_dump($tables_db2);
              ?>


              beispiel ausgabe wäre ok :
              resource(3) of type (mysql result) resource(4) of type (mysql result)

              beispiel ausgabe fehler 2 abfrage :
              resource(3) of type (mysql result) bool(false)

              ansonsten mal überlegen warum du entweder doppelt definierst, oder doppelt connectes und ob ,wenn schon zusammenführen, gleich eine andere logik genutzt werden sollte.

              Sieht mir auch recht merkwürdig aus, das eine CONNECT mit dem anderen CONNECT einfach so zu kombinieren, immerhin tuen beide das gleiche, wobei doch nur noch ein CONNECT gebraucht wird und dann nur noch mit
              mysql_select_db("albus",$db); 
              umgeschaltet wird. [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

            • Antwort von nach 15 Stunden 0 hilfreich
              Re^7: 2 db Verbindungen

              Hi .. habe das test script mal ausprobiert:
              resource(3) of type (mysql result) resource(4) of type (mysql result)

              Wie gesagt, wenn du mir sagen könntest wie ich beides mit einander verbinden kann, so das ich nur ein connect benötige, dann würde mich das freuen. Ich nutzte jetzt schon seit Jahren das Onlinestatsscript und ich finde das ist mit eines der besten was ich bisher gefunden habe. Aber ich kann ja schlecht was an dem script ändern, da sonst ja alles geändert werden müsste. Also muss ich meine Einstellungen dem Script anpassen, nur wie?

              Den Code den das Script zum connecten nimmt hab ich gepostet, ich bräuchte nur noch nen Tipp wie ich meins dem anpasse so das es funktioniert.

              Tobias

            • Antwort von nach einem Tag 0 hilfreich
              Re^8: 2 db Verbindungen

              Okay vielen Dank für eure Hilfe ..
              Hab nun irgendwie doch mit select Glück gehabt, keine Ahnung warum es jetzt geht.
              Für die Zukunft weiss ich bescheid, vielen Dank.


              MfG Tobias

  2. Antwort von nach 2 Stunden 0 hilfreich
    Re: 2 db Verbindungen

    Hallo,

    wenn der benutzer auf beide datenbanken zugriff hat kannst du mit
    mysql_select_db (datenbank)
    einfach zwischen den datenbanken hin und her wechseln

    Gruß
    Phillip

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!