Kalle_B: mysql_connect bei zwei Datenbanken

Hallöle,

ich greife auf zwei Datenbanken zu, die auf getrennten Servern liegen. Grund: Daten kopieren (Backup), später: Beide Datenbanken parallel updaten.

Das Zauberwort beim Absetzen der SELECT- Kommandos ist ja der $conn_id, der beim Erstkontakt mit dem HOST vergeben wird.

Ich habe also ZWEI $conn_id[], die bisher unterschiedlich waren. Aber das war wohl nur Zufall. Wie ist es denn, wenn BEIDE Hosts dieselbe $conn_id zurückgeben?

Gut, ich könnte das Problem umgehen, indem ich mal die eine, mal die andere Datenbank öffne. Weiss nicht, wieviel Zeit das kostet.

Oder gibt's da eine Lösung?

Gute Nacht, Kalle

  1. Hallo Kalle,

    Ich habe also ZWEI $conn_id[], die bisher unterschiedlich waren. Aber das war wohl nur Zufall. Wie ist es denn, wenn BEIDE Hosts dieselbe $conn_id zurückgeben?

    wo ist Dein Problem? Da Du Deine Software erstellt hast, weißt Du, welche Connection welcher Datenbank zuzuordnen ist. Du solltest Dir dies merken. Entweder in einem assoziativen Array oder in zwei unterschiedlichen Variablen mit sprechendem Namen.

    Freundliche Grüße

    Vinzenz

    1. Hallo Vinzenz,

      wo ist Dein Problem?

      $host[0] = "mysql.provider_a.de";
      $host[1] = "sql.provider_b.nl";

      $conn_id[0] = @mysql_connect( $host[0], $id[0], $pw[0] ); // ergibt 1
      if ( $conn_id[0] ) mysql_select_db( $database[0], $conn_id[0] );

      $conn_id[1] = @mysql_connect( $host[1], $id[1], $pw[1] ); // auch 1
      if ( $conn_id[1] ) mysql_select_db( $database[1], $conn_id[1] );

      Der zweite mysql_select_db muesste dann doch fehlschlagen?

      Wie gesagt, bewusst testen kann ich das nicht, da bisher zufällig beide conn_id unterschiedlich waren (1 oder 2 / 5 )

      Kalle

      1. Hallo Vinzenz,

        wo ist Dein Problem?

        $host[0] = "mysql.provider_a.de";
        $host[1] = "sql.provider_b.nl";

        $conn_id[0] = @mysql_connect( $host[0], $id[0], $pw[0] ); // ergibt 1
        $conn_id[1] = @mysql_connect( $host[1], $id[1], $pw[1] ); // auch 1

        Und aus welcher Datenbank kommt jetzt die Antwort:

        $q = "SELECT * FROM adressen WHERE id=4711";
          $result = mysql_query( $q, $conn_id[0] );

        wenn doch BEIDE $conn_id[] den Wert 1 haben?

        Kalle

        1. Moin!

          Und aus welcher Datenbank kommt jetzt die Antwort:
          wenn doch BEIDE $conn_id[] den Wert 1 haben?

          Die Connection-ID ist das Ergebnis deines lokalen PHPs, damit PHP die zwei verschiedenen DB-Verbindungen identifiziert.

          Interessiere dich nicht für den tatsächlich sichbar zu machenden Wert dieser ID, benutze ihn einfach nur.

          Du glaubst, die IDs könnten durch mysteriöse Einwirkungen plötzlich mal identisch sein. Das werden sie niemals tun. Genauso kannst du mit PHP auch mehr als eine Datei mit fopen() öffnen, und kriegst niemals identische File-Handles.

          - Sven Rautenberg

          --
          My sssignature, my preciousssss!
          1. Moin, Sven,

            Die Connection-ID ist das Ergebnis deines lokalen PHPs, damit PHP die zwei verschiedenen DB-Verbindungen identifiziert.

            AHA - ich dachte, die Datenbank meldet den/das handle zurück, und die eine Datenbank weiss nichts von der anderen.

            Dann ist ja alles gut.

            Kalle

      2. echo $begrüßung;

        $conn_id[0] = @mysql_connect( $host[0], $id[0], $pw[0] ); // ergibt 1
        $conn_id[1] = @mysql_connect( $host[1], $id[1], $pw[1] ); // auch 1

        Wie ermittelst du, dass es "1 ergibt"?

        echo "$verabschiedung $name";