[PHP] in 1 script info uit meerdere db's halen en tonen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Tweakers,

Voor een nieuwe webapplicatie wil ik informatie uit 2 database op 1 pagina weergeven en waar nodig combineren. Het gaat me nu alleen om het 1e stuk, het weergeven van de info uit beide databases. Na wat gesnuffel op http://nl.php.net/mysql_select_db dacht ik de goede oplossing te hebben maar ik krijg het voorbeeld niet werkend.

De databases zijn als volgt opgebouwd:

database 1
naam: intranet_jtm
user: root_jtm
wachtwoord: welkom

database 2
naam: intranet_vwe
user: root_vwe
wachtwoord: lal

Ik heb nu het volgende testscript:
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
<?php
error_reporting(E_ALL);
// voorbeeld van 1 user met 2 databases wat altijd zou moeten werken
// none of thesehandles are re-used as the connection parameters are different on them all, despite connecting to the same server (assuming 'myuser' and 'otheruser' have the same privileges/accesses in mysql)
$handle_db1 = mysql_connect("localhost","root_vwe","lal");
$handle_db2 = mysql_connect("localhost","root_jtm","welkom");

// give each handle it's own database to work with, permanently.
mysql_select_db("intranet_vwe",$handle_db1);
mysql_select_db("intranet_jtm",$handle_db2);

//do a query from db1 :
$query = "select * from view"; 
mysql_query($query,$handle_db1);

// toon het aantal rijen
echo ("<br>aantal rijen in view in database intranet_vwe</b>:");
echo (mysql_affected_rows());
echo ("<br>");

//do a query from db2:
$query = "select * from view"; 
mysql_query($query,$handle_db2);

// toon het aantal rijen
echo ("<br>aantal rijen in view in database intranet_jtm</b>:");
echo (mysql_affected_rows());
echo ("<br>");
?>


Ik krijg dit maar niet werkend. De user informatie klopt, de tabel view is in beide databases aanwezig en bevat in beide data, de connectie werkt en toch selecteert mysql altijd de database uit de database waarvan als laatste de connecie aangemaakt is.

Voor de duidelijkheid, de tabel view bevat in intranet_vwe 1 rij en in intranet_jtm 29 rijen. Ik zou verwachten dat dit script ook die aantallen in die volgorde zou tonen maar ik krijg bij het volgende:

code:
1
2
aantal rijen in view in database intranet_vwe:-1
aantal rijen in view in database intranet_jtm:29


Op de een of andere manier kan hij bij de 1e query niets op halen. Iemand enig idee wat hier fout gaat?

[ Voor 11% gewijzigd door Verwijderd op 09-03-2008 19:23 ]


Acties:
  • 0 Henk 'm!

  • Eegee
  • Registratie: Januari 2000
  • Laatst online: 20-09 23:09
mysql_affected_rows() geeft het aantal rijen dat betrokken was bij de laatste INSERT, UPDATE of DELETE query die geassocieerd was met link_identifier. Als de link identifier niet gegeven is, wordt de link die als laatste werd geopend met mysql_connect() gebruikt.
http://nl.php.net/manual/nl/function.mysql-affected-rows.php

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dat meen je niet. Werkte het dus wel. Mocht iemand anders een goed werkend voorbeeld willen, hieronder staat ie:

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
<?php
error_reporting(E_ALL);
// voorbeeld van 1 user met 2 databases wat altijd zou moeten werken
// none of thesehandles are re-used as the connection parameters are different on them all, despite connecting to the same server (assuming 'myuser' and 'otheruser' have the same privileges/accesses in mysql)
$handle_db1 = mysql_connect("localhost","root_vwe","lal");
$handle_db2 = mysql_connect("localhost","root_jtm","welkom");

// give each handle it's own database to work with, permanently.
mysql_select_db("intranet_vwe",$handle_db1);
mysql_select_db("intranet_jtm",$handle_db2);

//do a query from db1 
echo ("<br><b>database info intranet_vwe</b><br>");
$query = "select * from view"; 
$result1 = mysql_query($query,$handle_db1);
while ($data1 = mysql_fetch_array($result1)) {
    echo ("$data1[view_naam]<br>");
}

//do a query from db2 
echo ("<br><b>database info intranet_jtm</b><br>");
$query = "select * from view"; 
$result2 = mysql_query($query,$handle_db2);
while ($data2 = mysql_fetch_array($result2)) {
    echo ("$data2[view_naam]<br>");
}
?>

Acties:
  • 0 Henk 'm!

Verwijderd

mysql_nuw_rows() gebruiken ipv. affected_rows want die is niet voor selects

edit: http://nl.php.net/manual/nl/function.mysql-num-rows.php

[ Voor 74% gewijzigd door Verwijderd op 09-03-2008 19:32 ]


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Verwijderd schreef op zondag 09 maart 2008 @ 19:30:
Mocht iemand anders een goed werkend voorbeeld willen, hieronder staat ie:
In een goed voorbeeld wordt middels de return values van mysql_connect(), mysql_select_db() en mysql_query() gecontroleerd op fouten. :> O-)

{signature}