[PHP/MySQL] meerdere connecties

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Tsunami
  • Registratie: Juni 2002
  • Niet online
De situatie is als volgt: ik ben bezig met het maken van een website, met daarbij een phpBB forum. Deze zitten allebei in een aparte database, en die hebben weer een aparte gebruikersnaam en wachtwoord (het control panel van de hosting is zo opgezet dat je niet dezelfde gebruikersnaam en wachtwoord voor meerdere databases kan gebruiken). Nu wil ik op de site een lijstje zetten van de laatste 5 topics op het forum waarin gereageerd is. Ik heb dus een tweede connectie nodig, alleen maar voor die query. Alle andere queries moeten door de eerste connectie gaan. Daarom stop ik de eerste connectie het liefst niet in een variabele, omdat ik die dan bij iedere query moet geven. Een stukje relevante code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  // Eerste connectie naar database site
  mysql_connect("localhost", "user1", "pass1");
  mysql_select_db("db1");
  
  $query  = mysql_query("SELECT * FROM table1");
  $record = mysql_fetch_assoc($query);
  
  
  // Tweede connectie naar database forum
  $forum  = mysql_connect("localhost", "user2", "pass2", true);
  mysql_select_db("db2", $forum);
  
  $query  = mysql_query("SELECT * FROM table2", $forum);
  $record = mysql_fetch_assoc($query);
Hierna wil ik dus weer terug naar de eerste connectie, maar dit lukt me op geen enkele manier. Ik heb new_link op true gezet bij de tweede connectie, in de hoop/verwachting dat hij dan niet de eerste connectie zou overschrijven, maar dit heeft geen enkel effect. Ook heb ik al een mysql_close gebruikt om de tweede connectie af te sluiten, maar dan ben ik mijn eerste connectie ook kwijt. Ik heb al gezocht op GoT en Google, maar ik heb nog niet gevonden wat nou de beste oplossing is. Nu is mijn vraag dus of het mogelijk is zoals ik wil, of dat ik een alternatief moet zoeken, en zo ja, wat dan het beste is:
  • Het forum in de eerste database zetten, zodat ik niet van database hoef te wisselen, en dus geen tweede connectie hoef te maken.
  • Na de tweede connectie gebruikt te hebben, weer een connectie naar de eerste database te maken.
  • De eerste connectie een variabele geven, en die meegeven aan iedere query.
Alvast bedankt :)

Server Information
Apache 1.3.34
PHP 4.4.0
MySQL 4.1.11

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Gooi beide verbindingen in een var, maar connect als eerste met je forum databas.e
Wanneer je geen resource ID meegeeft wordt, volgens mij, de laatste geopende connectie gebruikt.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$dbForum = mysql_connect("forun");
$dbWEbsite = mysq_conenct("website");

// Query voor website
$result = mysql_query();

// Query voor forum
$result = mysql_query("", $dbForum);
// Forum niet meer nodig
mysql_close($dbForum);

// Query voor website
$result = mysql_query();


Gebruik in het vervolg altijd je resource identifier in je querys, dan kun je dit soort problemen bij een toekomstige wijziging voorkomen :)

[ Voor 18% gewijzigd door frickY op 04-02-2006 13:10 ]


Acties:
  • 0 Henk 'm!

  • StevenK
  • Registratie: Februari 2001
  • Nu online
frickY schreef op zaterdag 04 februari 2006 @ 13:09:
Gooi beide verbindingen in een var, maar connect als eerste met je forum databas.e
Wanneer je geen resource ID meegeeft wordt, volgens mij, de laatste geopende connectie gebruikt.

Gebruik in het vervolg altijd je resource identifier in je querys, dan kun je dit soort problemen bij een toekomstige wijziging voorkomen :)
Het probleem wordt niet door de connecties veroorzaakt, maar door de select_db. Als je een select_db doet, lijkt 'ie voor alle connecties naar die server te gelden.

[ Voor 23% gewijzigd door StevenK op 04-02-2006 17:43 ]

Was advocaat maar vindt het juridische nog steeds leuk


Acties:
  • 0 Henk 'm!

  • orf
  • Registratie: Augustus 2005
  • Laatst online: 21:36

orf

Het probleem wordt niet door de connecties veroorzaakt, maar door de select_db. Als je een select_db doet, lijkt 'ie voor alle connecties naar die server te gelden.
En daarom is het tweede argument van mysql_select_db ook de de resource link_identifier.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

orf schreef op zaterdag 04 februari 2006 @ 17:53:
En daarom is het tweede argument van mysql_select_db ook de de resource link_identifier.
...en daarom moet die resource link_identifier ook bij alle communicatie naar databases toe gebruikt worden wanneer er meer dan een databaseconnectie nodig is in één script.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Tsunami
  • Registratie: Juni 2002
  • Niet online
Ik had gehoopt dat er een betere oplossing voor was, maar de manier van frickY werkt in ieder geval wel.

Acties:
  • 0 Henk 'm!

  • pietje63
  • Registratie: Juli 2001
  • Nu online

pietje63

RTFM

Een andere oplossing ook goed?
Topics anywhere is een javascript zodat je op een willekeurige pagina de laatste topics weer kan geven. Je kunt best veel dingen instellen (zoals aantal, layout, welke info te tonen) en je kunt de js op elke pagina include.

http://www.phpbb.com/phpBB/viewtopic.php?t=72782 (ik weet niet of dit de meest recente versie is, maar misschien kun je hier iig verder mee)

[ Voor 14% gewijzigd door pietje63 op 05-02-2006 00:56 ]

De grootste Nederlandstalige database met informatie over computers met zoekfunctie!!


Acties:
  • 0 Henk 'm!

  • DirkT
  • Registratie: Juli 2002
  • Niet online

DirkT

toet

Je kunt ook een class gebruiken voor je hele mysql dingen,

op die manier kun je gewoon 2x een mysql class aanmaken en die op hun eigen beurt een connectie laten maken, dan is het een kwestie van de goeie class aansturen voor welke dbase hij gaat gebruiken.

op http://pear.php.net hebben ze de standaard modules DB voor, werkt prima in dit soort gevallen

iRacing profiel - FanaLEDs voor je racesimulatie displays en meer!

Pagina: 1