Zwei DB Connections auf unterschiedliche DBs
Tolwin
- php
Hallo Forum,
besteht die möglichkeit zwei DB Connections auf unterschiedliche DB´s
in einem PHP Skript zu machen? Ich versuche Daten von einer DB in eine andere per Aufruf zu überspielen. Tipps und Hinweise zu optionalen Methoden wären auch super!
Vielen Dank und Gruß
Tolwin
Moin!
besteht die möglichkeit zwei DB Connections auf unterschiedliche DB´s in einem PHP Skript zu machen?
Ja, klar. Einfach machen.
- Sven Rautenberg
Hi Sven,
ich habs mal so versucht:
$sql1["host"] = "host1";
$sql1["user"] = "user1";
$sql1["pass"] = "pass1";
$sql1["db"] = "db1";
if (!$connect1 = mysql_connect($sql1["host"], $sql1["user"], $sql1["pass"])) {
die(mysql_error());
} else { echo "erfolgreich verbunden<br>"; }
$db1=mysql_select_db($sql["db"]) or die ("DB-Auswahl fehlgeschlagen");
$sql2["host"] = "host1";
$sql2["user"] = "user2";
$sql2["pass"] = "pass2";
$sql2["db"] = "db2";
if (!$connect2 = mysql_connect($sql2["host"], $sql2["user"], $sql2["pass"])) {
die(mysql_error());
} else { echo "erfolgreich verbunden<br>"; }
$db2=mysql_select_db($sql2["db"]) or die ("DB-Auswahl fehlgeschlagen");
Diese Datei (mysql_connect.php) includiere ich in das entsprechende PHP Skript. Wenn ich sie aufrufe, kommt diese Fehlermeldung:
erfolgreich verbunden
DB-Auswahl fehlgeschlagen
Woran könnte das liegen?
Gruß
Tolwin
hi,
$db2=mysql_select_db($sql2["db"])
Und auf welche Verbindung möchtest du diese Anweisung bezogen sehen?
gruß,
wahsaga
$db2=mysql_select_db($sql2["db"])
Hi, ich dachte auf
$sql2["db"] = "db2";
$sql2["db"] ist ein Feld im Hash dem der Name der zweiten Datenbank zugewiesen wurde.
Gruß
Tolwin
hi,
$db2=mysql_select_db($sql2["db"])
Und auf welche Verbindung möchtest du diese Anweisung bezogen sehen?
Hi, ich dachte auf
$sql2["db"] = "db2";
$sql2["db"] ist ein Feld im Hash dem der Name der zweiten Datenbank zugewiesen wurde.
Fragte ich nach der Datenbank?
Moment, lass mich einen Stringvergleich zwischen "Datenbank" und "Verbindung" machen.
Nein, "Datenbank" ist nicht gleich "Verbindung".
gruß,
wahsaga
Danke für den Hinweis, gebe jetzt die Connection jeweils beim DB Select mit. Jetzt gehts!
$db1=mysql_select_db($sql1["db"], $connect1) or die ("DB-Auswahl fehlgeschlagen");
$db2=mysql_select_db($sql2["db"], $connect2) or die ("DB-Auswahl fehlgeschlagen");
Danke und Gruß
Tolwin
Jetzt hab ich aber doch noch ein Problem.
Wie genau kann ich auf die jeweilige DB referenzieren?
Die Connections werden ja schon in der Datei mysql_connect.php
$db1 und $db2 zugewiesen. Über mysql_query() kann ich den entsprechenden Handle nicht mitgeben.
require("mysql_connect.php");
$sql = "SELECT DATE_FORMAT( ......"
$result = mysql_query($sql) OR die(mysql_error());
#var_dump($result);
while($row = mysql_fetch_assoc($result)) {
echo "<pre>";
print_r($row);
echo "<pre/>";
}
In der Beschreibung zu mysql_query() konnte ich auf PHP.net auch nix finden.
Gruß
Tolwin
Hallo
Wie genau kann ich auf die jeweilige DB referenzieren?
Die Connections werden ja schon in der Datei mysql_connect.php
$db1 und $db2 zugewiesen. Über mysql_query() kann ich den entsprechenden Handle nicht mitgeben.
Natürlich kannst Du das. In Deinem Fall ist es doch erforderlich.
In der Beschreibung zu mysql_query() konnte ich auf PHP.net auch nix finden.
Ich zitiere aus dem Handbuchabschnitt zu mysql_query:
mysql_query — Sendet eine Anfrage an MySQL
resource mysql_query ( string Anfrage [, resource Verbindungs-Kennung] )
Freundliche Grüße
Vinzenz
Habs noch mal versucht und es hat geklappt.
Hatte nicht die Connection sondern den DB Handle übergeben.
Nochmals viele Dank an alle Beteiligten!
Viele Grüße
Tolwin
echo $begrüßung;
Habs noch mal versucht und es hat geklappt.
Hatte nicht die Connection sondern den DB Handle übergeben.
Bitte sei doch demnächst etwas aufmerksamer beim Handbuch-Lesen. Es gibt keinen "DB-Handle". mysql_select_db() gibt einen boolschen Wert zurück, der über Erfolg oder Misserfolg aufklärt. Außerdem ist im Handbuch immer von einem "link identifier" die Rede, und diese Bezeichnung steht nicht nur aus reinem Zufall immer wieder im gleichen Wortlaut da.
Im Handbuch ist die entscheidende Zeile:
bool mysql_select_db ( string $database_name [, resource $link_identifier] )
Vor dem Funktionsnamen steht der Typ des Rückgabewertes. Mitunter sind dazu noch weitere Informationen im Fließtext zu finden. Und es gibt Ausnahmen, die ebenfalls im Fließtext aufgeführt sind. (Beispielsweise liefert mysql_connect() im Normalfall den Spezialtyp resource, und im Fehlerfall bool(ean).) Als Typ kann auch noch void aufgeführt sein, dann hat die Funktion keinen Rückgabewert.
Für mysql_select_db() ist das Ergebnis also true oder false (die beiden möglichen Werte für den Typ boolean). Ausnahmen sind keine erwähnt.
Die Parameterliste der Funktion steht in den ()-Klammern. Die Notation erfolgt dabei immer in Form einer Typ-Angabe gefolgt von einem Variablennamen. Der Variablenname ist nur ein eindeutiger Bezeichner, damit im weiteren Text der Funktionsbeschreibung darauf Bezug genommen werden kann. Bei Verwendung der Funktion im eigenen Script-Code ist nur die Position des Parameters entscheidend.
Der zweite Parameter ist in []-Klammern aufgeführt. Das bedeutet, dass dieser Parameter optional ist. Er kann also entfallen. Die genauen Bedingungen dazu, und was passiert, wenn man ihn nicht verwendet, sind wieder im Fließtext erläutert.
echo "$verabschiedung $name";
$sql2["db"] ist ein Feld im Hash dem der Name der zweiten Datenbank zugewiesen wurde.
Achte mal beim Punkt Beschreibung auf den optionalen Parameter der Funktion mysql_select_db