Korte uitleg
Ik heb 2 site's met dus 2 database's

Wat wil ik
Ik wil op 1 site de statistieken van de andere site laten zien.

Dus me vraag
Hoe kan ik 2 database connecties maken en dan dus kiezen welke query ik uit welke database haal.
Door met classes te werken kan je juist de verbindingen makkelijker uit elkaar houden. Zonder kan het ook, dus je site nu anders opbouwen is onnodig.

Je kan nu gewoon boven aan je pagina de 2 databases connecten, en die var steeds gebruiken bij je query, is toch niet lastig of langzaam :s
Kan je dan een voorbeeldje geven?
of mijn voorbeeld aanpassen.
<?php
session_start();
ob_start();
error_reporting(E_ALL);
ini_set("display_errors", 1);

// Connectie met database site1
$connectie_1 = mysql_connect("localhost", "root", "") or die ( mysql_error());
$database_1 = mysql_select_db("site1", $connectie_1) or die (mysql_error());

// Connectie met database site2
$connectie_2 = mysql_connect("localhost", "root", "") or die ( mysql_error());
$database_2 = mysql_select_db("site2", $connectie_2) or die (mysql_error());

// Kijken of ik alle leden krijg
$q1 = mysql_query("SELECT nick FROM leden", $database_1 ) or die(mysql_error()); // Query op database site1
while($a1 = mysql_fetch_assoc($q1))
{
echo $a1['nick']."<br />";
}
// Output moet zijn: Moozzie

// Kijken of ik alle admins krijg
$q2 = mysql_query("SELECT login FROM admin", $database_2 ) or die(mysql_error());// Query op database site2
while($a2 = mysql_fetch_assoc($q1))
{
echo $a2['login']."<br />";
}
// Output moet zijn: admin


/* Totale output moet zijn:
Moozzie
admin
*/

?>
ohw oke daar ging ik de fout in
ik zette de mysql_select_db niet in een var

waarschijnlijk bedoelde Robert ook zoiets maar ik vatte het niet ^^
Maar het werkt nu dus?
ohw damn,
ik dacht dat dit de oplossing was maar ik krijg deze fout:

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\host\xampp\htdocs\test\mysqltest\index.php on line 16

kan je een voorbeeld geven op class style?
Ik heb me vergist zie ik, het moet wel op de manier die jij deed.

En de classes manier maakt helemaal geen verschil, aangezien je nog steeds dezelfde functies gebruikt.

Maar zo zou het volgens mij dus wel moeten werken:
<?php
$conn1 = mysql_connect('localhost','root','');
$conn2 = mysql_connect('otherhost','root','');

mysql_select_db('db',$conn1);
mysql_select_db('db2',$conn2);

mysql_query("QUERY",$conn1);
mysql_query("QUERY@",$conn2);
?>
Omdat hij van elke connectie maar 1 database heeft hoef je dus niet te switchen.

Ik heb wel iets anders gevonden, dat je het in je query zelf kan regelen.
<?php
mysql_query("SELECT kolom FROM database.tabel;",$conn1);
?>Je geeft dus de database gewoon in de query mee, en de connectie identifier in de functie. Volgens mij kan het dan al helemaal niet fout gaan.
@Willem-Jan

Nu ga je met jou code wel dezelfde fout weer in (database_select niet in een var!), je hoeft maar 1 keer te connecteren, het is dezelfde server enzo, dus daar hoef je niets mee, na die connectie moet je alleen 2 x de database selecteren, ik zou het zo doen:

<?php
// 1x verbinding maken, is beide keren hetzelfde, zonde van de extra code!
$connectie = mysql_connect('localhost','root','');

// database 1 connecteren, + query
mysql_select_db('db',$connectie);
mysql_query("QUERY");

// database 2 connecteren, + query
mysql_select_db('db2',$connectie);
mysql_query("QUERY@");
?>


@jordy

Dat was inderdaad precies wat ik bedoelde, doordat je het niet in een var zette, selecteer je eerst db1, meteen daarna db2, en die blijft geselecteerd tot het einde van je code, dus ook op delen waar het je bedoeling was met db1 te connecten
Robert, maar zodra jij nu een andere database nodig hebt moet je weer mysql_select_db doen.

Ik had dat niet door, dat het ook zelfde pas e.d. was.
Dan is mijn 2e manier denk ik sneller dan steeds mysql_select_db uitvoeren, maar of dat echt werkt weet ik niet.
Mocht beide methode niet werken, kan je ook eens naar mysql_db_query kijken, voorzover ik snap kan je dan mysql_select_db in een var stoppen, en die aan je query voeren, wat ik dus gisteren probeerde, maar wat blijkbaar niet kan.
Ik ga even jullie opties uitproberen :-)

Reageren