[php/mysql] Gegevens overzetten tussen 2 DB's *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Teak
  • Registratie: Juli 2003
  • Laatst online: 29-08 22:15
Ik heb al een tijdje lopen zoeken of hier over al een topic was. Maar ik heb hem niet kunnen vinden.

Het probleem waar in mee zit is dat ik vanuit een database op internet gevens wil halen. En die dan vervolgens in een locale database laten invoegen.

Maar dit wil niet echt lukken vanwege het probleem dat het aanroepen van de 2de database oftewel de locale database dan niet wil lukken.

Hieronder staat het php script wat ik hiervoor gebruik.

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
<?

// open database 1

$dbhost = 'niet local';
$dbusername = '';
$dbpasswd = '';
$database_name = 'test';

$connection = mysql_pconnect("$dbhost","$dbusername","$dbpasswd")
    or die ("Couldn't connect to server.");

$db = mysql_select_db("$database_name", $connection)
    or die("Couldn't select database.");

// open database 2

$dbhost2 = 'localhost';
$dbusername2 = '';
$dbpasswd2 = '';
$database_name2 = 'test';

$connection2 = mysql_pconnect("$dbhost2","$dbusername2","$dbpasswd2")
    or die ("Couldn't connect to server.");

$db2 = mysql_select_db("$database_name2", $connection2)
    or die("Couldn't select database.");

// overzetten van database 1 naar database 2

    $date = date("Y-m-d");

    $query = "SELECT * FROM test WHERE datum = '$date';";
    $result = mysql_query($query) or die("<b>MySQL error:</b> ". mysql_error());
    
    while ($rij = mysql_fetch_array($result)){
    
        $naam = $rij["naam"];
    
        $query2 = "INSERT INTO test WHERE naam = '$naam' AND datum = '$date';";
        $result2 = mysql_query($query2) or die ("<b>MySQL error:</b> ".mysql_error());
    }
    
    echo "Datbase is overgezet!";
?>

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

PHP:
1
$connection = mysql_pconnect("$dbhost","$dbusername","$dbpasswd")
Waarom pconnect? Waarom quotes om je varnamen? :/

Heb je de host/username/pass/database naam wel goed? Waar gaat het fout? Wat doettie wel en niet?

'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!

  • Teak
  • Registratie: Juli 2003
  • Laatst online: 29-08 22:15
NMe84 schreef op 12 mei 2004 @ 22:59:
[...]

Waarom pconnect? Waarom quotes om je varnamen? :/

Heb je de host/username/pass/database naam wel goed? Waar gaat het fout? Wat doettie wel en niet?
Wat er fout ga heb ik hierboven al neergezet! Hij wil de 2de database dus waar hij de gegevens inzet niet aanroepen. Waardoor het stukje waarin hij de gegevens dus overzit ook niet wil werken.

Waarom pconnect? Dit leek mij het makkelijkste

Acties:
  • 0 Henk 'm!

  • phYzar
  • Registratie: November 2001
  • Laatst online: 13:33
je opent 2 database verbindingen maar je queries maken niet specifiek gebruik van een bepaalde verbinding ofzo, je voert gewoon queries uit.

Acties:
  • 0 Henk 'm!

  • Teak
  • Registratie: Juli 2003
  • Laatst online: 29-08 22:15
phYzar schreef op 12 mei 2004 @ 23:16:
je opent 2 database verbindingen maar je queries maken niet specifiek gebruik van een bepaalde verbinding ofzo, je voert gewoon queries uit.
Oke, maar hoe val dit dan op te lossen?

Acties:
  • 0 Henk 'm!

Verwijderd

wrom 2 connecties maken, je kan toch ook een full-dump maken op de ene server, en die bij de 2e server importeren??

Lijkt mij persoonlijk makkelijker...

Acties:
  • 0 Henk 'm!

  • phYzar
  • Registratie: November 2001
  • Laatst online: 13:33
Teak schreef op 12 mei 2004 @ 23:17:
[...]


Oke, maar hoe val dit dan op te lossen?
eerst 1 openen, alles ophalen, sluiten, andere openen, inserten, sluiten
(of eventueel per record, maar dat zal niet erg snel gaan)

Acties:
  • 0 Henk 'm!

  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

Waarom is pconnect() hier makkelijker? Je hebt het hier absoluut niet nodig, beetje zonde van (mja wel weinig maar het is iets) je resources.

Je hoeft btw niet eerst de eerste te openen, data retrieven etc..:
resource mysql_query ( string query [, resource link_identifier])

[ Voor 33% gewijzigd door Radiant op 12-05-2004 23:28 ]


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Teak schreef op 12 mei 2004 @ 23:13:
Wat er fout ga heb ik hierboven al neergezet! Hij wil de 2de database dus waar hij de gegevens inzet niet aanroepen. Waardoor het stukje waarin hij de gegevens dus overzit ook niet wil werken.

Waarom pconnect? Dit leek mij het makkelijkste
pconnect houdt de verbinding in stand (p is van persistent). Dat wil zeggen dat je hem ook zelf MOET sluiten, of je nou wil of niet, anders heb je een memleak in je script. Je kan hier veel beter mysql_connect gebruiken, dus zonder die p. :P

Verder zou ik alle records ophalen en naar een textfile schrijven. Daarna de verbinding verbreken en dan die 2e verbinding aanmaken en daar met 1 query dat hele tekstbestand invoeren. Daarna kan dat tekstbestand natuurlijk weer weg.

Wat je hierboven probeerde kan trouwens ook. Dan moet je de tweede, optionele parameter van mysql_query gebruiken:
PHP:
1
mysql_query($query, $connection)


edit:
*spuit 11*

[ Voor 6% gewijzigd door NMe op 12-05-2004 23:37 ]

'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!

  • Teak
  • Registratie: Juli 2003
  • Laatst online: 29-08 22:15
NMe84 schreef op 12 mei 2004 @ 23:35:
[...]

pconnect houdt de verbinding in stand (p is van persistent). Dat wil zeggen dat je hem ook zelf MOET sluiten, of je nou wil of niet, anders heb je een memleak in je script. Je kan hier veel beter mysql_connect gebruiken, dus zonder die p. :P

Verder zou ik alle records ophalen en naar een textfile schrijven. Daarna de verbinding verbreken en dan die 2e verbinding aanmaken en daar met 1 query dat hele tekstbestand invoeren. Daarna kan dat tekstbestand natuurlijk weer weg.

Wat je hierboven probeerde kan trouwens ook. Dan moet je de tweede, optionele parameter van mysql_query gebruiken:
PHP:
1
mysql_query($query, $connection)


edit:
*spuit 11*
Zal dit even proberen!

Morgen horen jullie wel of het gelukt is!

Acties:
  • 0 Henk 'm!

  • Teak
  • Registratie: Juli 2003
  • Laatst online: 29-08 22:15
NMe84 schreef op 12 mei 2004 @ 23:35:
[...]

pconnect houdt de verbinding in stand (p is van persistent). Dat wil zeggen dat je hem ook zelf MOET sluiten, of je nou wil of niet, anders heb je een memleak in je script. Je kan hier veel beter mysql_connect gebruiken, dus zonder die p. :P

Verder zou ik alle records ophalen en naar een textfile schrijven. Daarna de verbinding verbreken en dan die 2e verbinding aanmaken en daar met 1 query dat hele tekstbestand invoeren. Daarna kan dat tekstbestand natuurlijk weer weg.

Wat je hierboven probeerde kan trouwens ook. Dan moet je de tweede, optionele parameter van mysql_query gebruiken:
PHP:
1
mysql_query($query, $connection)


edit:
*spuit 11*
Dit heb ik inmiddels gedaan. Maar het werk nog niet!

Hij geeft nu wel aan dat de gegevens zijn overgezet maar in de database staat alsnog niks.

Heb het nu op de volgende manier gedaan.

PHP:
1
2
3
4
5
6
7
8
9
10
11
$query = "SELECT * FROM test WHERE datum = '$date';";
    $result = mysql_query($query, $connection) or die("<b>MySQL error:</b> ". mysql_error());
    
    while ($rij = mysql_fetch_array($result)){
    
        $naam = $rij["naam"];
        $hallo = $rij["hallo"];
    
        $query2 = "INSERT INTO test (naam,datum,hallo) VALUES ('$naam','$date','$hallo');";
        $result2 = mysql_query($query2, $connection2) or die ("<b>MySQL error:</b> ".mysql_error());
    }


Voor de rest is alles hetzelfde gebleven en heb ik mysql_connect ervan gemaakt. Wat doe ik nu alsnog fout??

Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17-09 20:52

ripexx

bibs

Je code ziet er gewoon goed uit, dus je zal moeten gaan debuggen. Print de queries eens naar het scherm zodat je die kan vergelijken. Probeer dan eens zo'n query via PHPMyAdmin of iets dergelijks uit te voeren. Werken je connecties gewoon goed, zet je error reporting op ALL, zodat je alle mogelijke fouten tegen komt.

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

  • PhoeniX-
  • Registratie: Juni 2000
  • Laatst online: 01-09 10:26
Of je pakt een tooltje als SQLYog (free trial versie), deze kan makkelijke syncen tussen twee servers.
Ik gebruik het hier ook om te syncen tussen client en server (beiden met een mysql database).

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
NME>

als het php script termineert wordt ook een pconnect gesloten hoor, afaik.

laat maar. :X

[ Voor 17% gewijzigd door Grijze Vos op 14-05-2004 15:26 ]

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • Teak
  • Registratie: Juli 2003
  • Laatst online: 29-08 22:15
Ik heb de oplossing gevonden.

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
// open database 1

$dbhost = '';
$dbusername = ';
$dbpasswd = ';
$database_name = '';

$connection = mysql_connect("$dbhost","$dbusername","$dbpasswd","$database_name")
    or die ("Couldn't connect to server.");

$db = mysql_select_db("$database_name", $connection)
    or die("Couldn't select database.");

// open database 2

$dbhost2 = '';
$dbusername2 = '';
$dbpasswd2 = '';
$database_name2 = '';

$connection2 = mysql_connect("$dbhost2","$dbusername2","$dbpasswd2","$database_name2")
    or die ("Couldn't connect to server.");

$db2 = mysql_select_db("$database_name2", $connection2)
    or die("Couldn't select database.");


Ineens bedacht ik me dat ik misschien de database naam ook kon aanroepen in mysql_connect. Dit blijk dus te werken :D

Iedereen bedankt voor zijn hulp _/-\o_

[ Voor 20% gewijzigd door Teak op 14-05-2004 23:06 ]


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Teak schreef op 14 mei 2004 @ 23:05:
Ik heb de oplossing gevonden.

PHP:
1
// lap code


Ineens bedacht ik me dat ik misschien de database naam ook kon aanroepen in mysql_connect. Dit blijk dus te werken :D

Iedereen bedankt voor zijn hulp _/-\o_
Dat zei ik al in het begin van dit topic? :P

Overigens zal de code die je hier gepost hebt zeker niet werken zoals je wil, check regel 4 en 5 maar. Je bent op beide regels hetzelfde vergeten. ;)

'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!

  • Teak
  • Registratie: Juli 2003
  • Laatst online: 29-08 22:15
Dat was een foutje van mij :P

Moest nog snel de gegevens daar weghalen. toen ook dat ' _/-\o_
Pagina: 1