2 db Verbindungen

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

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]

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

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.

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

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 :smile:

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.

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

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

<?php $db=mysql_connect("localhost","myuser","mypass");<br />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]

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

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