Jörg: Verbindung zu MySQL in einer bestehenden Verbindung

Hallo.

Ich versuche eine zweite Verbindung zu MySQL in einer function aufzubauen, während außerhalb dieser function schon eine besteht.
Beide Verbindungen sollen sich gegenseitig nicht beeinflussen.

Beispiel (bestehende Verbindung):

if (!mysql_connect($dbhost.":".$dbport, $dbuser, $dbpasswd) || !mysql_select_db($dbname)) {  
  $error = 'Die Verbindung zur MySQL-Datenbank ist gescheitert!';  
}  
  
// Aufruf der Function  
private_function('wert1','wert2');  
  
mysql_close();

Beispiel (function):

function private_function('wert1','wert2') {  
  
  $dbhost = 'localhost'; // Host der Datenbank (Standard: localhost)  
  $dbport = '3306'; // Port der Datenbank (Standard: 3306)  
  $dbname = 'Wert1'; // Name der Datenbank  
  $dbuser = 'Wert2'; // Name des Datenbank-Users  
  $dbpasswd = 'Wert3'; // Paßwort des Datenbank-Users  
  $dbtableVoIP = 'Wert4'; // Name der Datenbanktabelle  
  
  $test = mysql_connect($dbhost.":".$dbport, $dbuser, $dbpasswd, true);  
  mysql_select_db($dbname,$test);  
  
  $sql_suc = mysql_query("SELECT * FROM ".$dbtableVoIP."");  
  while ($row_suc = mysql_fetch_assoc($sql_suc)) {  
  echo $row_suc['name']."<br />";  
  }  
  
  mysql_close($test);  
  
}

Mit diesem Code funktionieren die Datenbankabfragen vor der Function und die Abfragen der anderen Datenbank in der Function.
Nach der Function kann ich aus der bereits bestehenden (alten) Verbindung keine Daten mehr abrufen.

Was mache ich falsch?

Danke.

MfG Jörg

  1. Hallo,

    Beispiel (bestehende Verbindung):

    if (!mysql_connect($dbhost.":".$dbport, $dbuser, $dbpasswd) || !mysql_select_db($dbname)) {

    $error = 'Die Verbindung zur MySQL-Datenbank ist gescheitert!';
    }

    Du vergißt die im Erfolgsfall von mysql_connect zurückgelieferte Ressource in einer Variablen zu speichern, so wie Du dies innerhalb Deiner Funktion machst.

    [code lang=php]function private_function('wert1','wert2') {

    // ...

    $test = mysql_connect($dbhost.":".$dbport, $dbuser, $dbpasswd, true);
      mysql_select_db($dbname,$test);

    // ...

    mysql_close($test);

    }

      
    
    > Was mache ich falsch?  
      
    Zusatzfrage: Warum verwendest Du noch die veralteten mysql\_\*-Funktionen? Siehe dazu <http://de.php.net/manual/en/mysqli.overview.php>.  
      
      
    Freundliche Grüße  
      
    Vinzenz
    
    1. Hi!

      Du vergißt die im Erfolgsfall von mysql_connect zurückgelieferte Ressource in einer Variablen zu speichern, so wie Du dies innerhalb Deiner Funktion machst.

      Denn ohne Angabe des optionalen Ressourcen-Parameters nehmen die mysql_*-Funktionen stets die zuletzt geöffnete Verbindung, und nicht die, die sich der Autor gedacht hat.

      Lo!

      1. Hi!

        Und noch ein Nachtrag:

        Denn ohne Angabe des optionalen Ressourcen-Parameters nehmen die mysql_*-Funktionen stets die zuletzt geöffnete Verbindung, und nicht die, die sich der Autor gedacht hat.

        Diese Unachtsamkeit kann bei der objektorientierten Arbeitsweise der mysqli-Extesnion nicht auftreten, da muss das Objekt ja zwingend angegeben werden. Aber auch bei der prozeduralen Version ist der Parameter $link ein Pflichtparameter.

        Lo!