2 database's
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.
Meestal zijn databases namelijk niet extern benaderbaar, dit uit veiligheids overwegingen.
Gewijzigd op 01/01/1970 01:00:00 door Jelle -
Of laat een pagina van de ene site in een frame zien op de andere.
Als je connect met een database in je script krijg je een MySQL link identifier terug. Als je een query uitvoert kun je die link identifier weer als argument meegeven waardoor hij de goede db pakt.
Ik ga er even van uit dat je die niet gebruikt:
dan kan je bij je kan 2 verbinden maken, deze sla je op in een variable. (verschillende uiteraard)
dan kan je als 2e optionele parameter bij
mysql_select_db()
en
mysql_query()
kiezen welke verbinding je gebruikt.
Edit:
Jan was me voor, ik type te langzaam :P
Gewijzigd op 01/01/1970 01:00:00 door Bo az
mysql_db_query :c)
Of met bedankt allemaal
ik heb dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
/* tabel info
site1.leden:
id
nick
pw
1, Moozzie, test
site2.admin
id
login
pw
1, admin, admin
*/
session_start();
ob_start();
error_reporting(E_ALL);
ini_set("display_errors", 1);
// Connectie met database site1
$database_1 = mysql_connect("localhost", "root", "") or die ( mysql_error());
mysql_select_db("site1", $database_1) or die (mysql_error());
// Connectie met database site2
$database_2 = mysql_connect("localhost", "root", "") or die ( mysql_error());
mysql_select_db("site2", $database_2) or die (mysql_error());
// Kijken of ik alle leden krijg
$q1 = mysql_query("SELECT nick FROM leden", $database_1 ) or die(mysql_error());
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());
while($a2 = mysql_fetch_assoc($q1))
{
echo $a2['login']."<br />";
}
// Output moet zijn: admin
/* Totale output moet zijn:
Moozzie
admin
*/
?>
/* tabel info
site1.leden:
id
nick
pw
1, Moozzie, test
site2.admin
id
login
pw
1, admin, admin
*/
session_start();
ob_start();
error_reporting(E_ALL);
ini_set("display_errors", 1);
// Connectie met database site1
$database_1 = mysql_connect("localhost", "root", "") or die ( mysql_error());
mysql_select_db("site1", $database_1) or die (mysql_error());
// Connectie met database site2
$database_2 = mysql_connect("localhost", "root", "") or die ( mysql_error());
mysql_select_db("site2", $database_2) or die (mysql_error());
// Kijken of ik alle leden krijg
$q1 = mysql_query("SELECT nick FROM leden", $database_1 ) or die(mysql_error());
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());
while($a2 = mysql_fetch_assoc($q1))
{
echo $a2['login']."<br />";
}
// Output moet zijn: admin
/* Totale output moet zijn:
Moozzie
admin
*/
?>
dit krijg ik als fout
dit komt omdat je hem zoekt in de eerste site database
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$q1 = mysql_query("SELECT nick
FROM leden",
$database_1 ) or die(mysql_error());
?>
$q1 = mysql_query("SELECT nick
FROM leden",
$database_1 ) or die(mysql_error());
?>
maar hij zegt dus dat ik in site2 zoek :S
Wat doe ik verkeerd?
mysql_db_query ($database1, "SELECT nick
FROM leden");
Werkt dat wel?
Mmm.
Quote:
Het makkelijkste dan is het om met een database class te werken die de verbinden voor je gescheiden houd.
Hoe moet het op deze manier? kan iemand me opweg helpen?
while($a2 = mysql_fetch_assoc($q1))
Die while klopt niet he ;) je maakt eerst $q2 en daarna doe je fetch assoc($q1) moet zeker $q2 zijn :)
Maar als die class manier makkelijker is kan iemand me daarmee opweghelpen?
$database_2 = mysql_connect("localhost", "root", "") or die ( mysql_error());
mysql_select_db("site2", $database_2) or die (mysql_error());
Dus wanneer je de query gaat doen met $database_2, maak je alleen de gewone connectie aan, en selecteer je geen db!
Klopt, het is wat gewissel, maar het werkt wel.. :)
Dus zo:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$conn1 = mysql_connect('host1','user','pass');
$db1 = mysql_select_db('database1',$conn1);
$conn2 = mysql_connect('host2','user','pass');
$db2 = mysql_select_db('database2',$conn1);
$res = mysql_query("",$db1);// Query in database 1
$res2 = mysql_query("",$db2);// Query in database 2
?>
$conn1 = mysql_connect('host1','user','pass');
$db1 = mysql_select_db('database1',$conn1);
$conn2 = mysql_connect('host2','user','pass');
$db2 = mysql_select_db('database2',$conn1);
$res = mysql_query("",$db1);// Query in database 1
$res2 = mysql_query("",$db2);// Query in database 2
?>
Alsnog de vraag hoe je uit 2 databases gegevens kan ophalen met classes.
Jammer dat je me niet kan helpen maar misschien krijgen we morge een antwoord :-)