Record kopieren met phpMyAdmin

Pagina: 1
Acties:
  • 203 views sinds 30-01-2008
  • Reageer

  • Arkomat
  • Registratie: September 2002
  • Laatst online: 30-07-2015
Hallo,

Ik ben nieuw met phpMyAdmin en heb (denk ik) een hele basic vraag waar ik het antwoord maar niet op kan vinden.

Mijn vraag is de volgende:
Is het mogelijk om met phpMyAdmin een record uit een table te kopieren naar een andere tabel en deze gekopieerde record eventueel te verwijderen uit de eerste (bron)tabel? Wellicht ten overvloede maar ik gebruik dus MySQL database.
Ik wil eigenlijk niet de records waar het om gaat één voor één handmatig overzetten naar de nieuwe tabel.

Alvast bedankt

Arkomat

  • Bergen
  • Registratie: Maart 2001
  • Laatst online: 28-11 12:23

Bergen

Spellingscontroleur

Ik weet 't niet 100% zeker, maar ik denk dat dat niet kan met phpMyAdmin. Is een simpel klein PHP-scriptje geen optie?

  • Arkomat
  • Registratie: September 2002
  • Laatst online: 30-07-2015
@Bergen
Dat is een snelle reply :)

Dat zou natuurlijk ook kunnen alleen heb ik weinig tot geen php ervaring. Ben gewend om met asp te werken maar voor een project met Joomla nu ik de PhP belandt. Kun je me helpen dan?

Verwijderd

export en dan import geen optie?

  • Arkomat
  • Registratie: September 2002
  • Laatst online: 30-07-2015
Heb overwogen om een SQL dump te maken maar het probleem is dan dat ik de records die ik nu in de Db heb staan die ik wil gaan gebruiken kwijt ben.

Voor de duidelijkheid.
Ik heb dus een bestaande db. Nu heb ik de site opnieuw opgezet met een aantal records die ik niet kwijt wil. Deze staan in een nieuwe db. Wat ik nu eigelijk wil is de records uit de oude database die ik nog kan gebruiken overzetten naar de nieuwe database. Daarna kan ik dan bij de update van de site de nieuwe database (daar maak ik dan een dump van) overzetten naar de host zodat de nieuwe database online komt te staan.

Een script zou dus kunnen om bepaalde recordId's van de ene table te kopieren naar de andere tabel maar nogmaals heb ik (nog) weinig kaas gegeten van de PhP syntax.

Wellicht heb je een scriptje liggen of een link naar een site waar ik iets kan vinden hierover.
Ik wil niet overkomen als een "gebruiker". Ben bereidt om zlf te scripten maar een beginpunt zou welkom zijn :)

Arkomat

  • Depress
  • Registratie: Mei 2005
  • Laatst online: 24-11 21:01
Dit heeft niet veel met php te maken maar meer met SQL. Zolang je met ASP met de MySQL DB kan praten kun je toch ook het scriptje in ASP maken.

Wat je dan zou moeten doen.
- Selecteer met je script je records.
- Zet deze results in array of iets dergelijks.
- Maak met deze resultaten een nieuwe query
- Voer deze query uit.

  • Mr_Dark
  • Registratie: Januari 2003
  • Laatst online: 23-11 21:58

Mr_Dark

Gotta catch 'em all

Als je in phpmyadmin de export functie gebruikt blijven gewoon de records in de database staan.

  • Arkomat
  • Registratie: September 2002
  • Laatst online: 30-07-2015
@Depress
Daar had ik idd nog niet aan gedacht. Kan natuurlijk ook in ASP. Zal eens een connectiestring zoeken voor een MySQL DB voor ASP.

  • Arkomat
  • Registratie: September 2002
  • Laatst online: 30-07-2015
@Mr Dark
Dat klopt maar dan moet je of de tabel anders noemen of ik krijg twee tabellen met records waar ik er maar één kan gebruiken maar dta ligt dan weer aan het CMS.

  • Arkomat
  • Registratie: September 2002
  • Laatst online: 30-07-2015
Iedereen bedankt voor de snelle reacties.
Ik ga eerst eens aan het scripten ;)

  • Bergen
  • Registratie: Maart 2001
  • Laatst online: 28-11 12:23

Bergen

Spellingscontroleur

Arkomat schreef op zaterdag 03 maart 2007 @ 12:11:
@Bergen
Dat is een snelle reply :)

Dat zou natuurlijk ook kunnen alleen heb ik weinig tot geen php ervaring. Ben gewend om met asp te werken maar voor een project met Joomla nu ik de PhP belandt. Kun je me helpen dan?
Sure! Even uit de losse pols, niet getest:
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
<?php
    // Verbinden met de server

    $hostname = "localhost";
    $username = "koe";
    $password = "schaap";
    mysql_connect($hostname, $username, $password) or die(mysql_error());

    // Selecteer de database

    mysql_select_db("mijndatabase") or die(mysql_error());

    // Bouw een query om je data op te halen
    // Laten we zeggen dat we de record met ID = 8 willen hebben
    // en dat de tabel 'gegevens' heet

    $query = "SELECT * FROM gegevens WHERE id = 8";

    // Die voeren we uit, het resultaat komt in $result

    $result = mysql_query($query) or die(mysql_error());

    // We halen uit het resultaat de eerste (en enige) regel,
    // die stoppen we in een array genaamd $array

    $array = mysql_fetch_assoc($result);
    
    // Haal de ID entry eruit, die zetten we niet in de nieuwe tabel toch?
    
    unset($array["id"]);
    
    // Bouw een nieuwe query om de record in
    // een tabel genaamd 'nieuw' te zetten
    
    // keys en values met aanhalingstekens ertussen...
    
    $keys = implode(",", array_keys($array));
    $values = implode("','", array_values($array));
    
    // Alles in een query... 
    
    $query = "INSERT INTO nieuw ($keys) VALUES ('$values')";
    
    // Die voeren we uit...
    
    mysql_query($query) or die(mysql_error());
    
    // That's it. Als de regel uit de oude tabel moet worden gehaald:
    
    $query = "REMOVE FROM gegevens WHERE id = 8";
    mysql_query($query) or die(mysql_error());
?>

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
http://dev.mysql.com/doc/refman/5.0/en/insert.html:
INSERT INTO ..
SELECT
SQL:
1
2
INSERT INTO nieuw
SELECT * FROM gegevens WHERE id = 8

En zonder WHERE id=8 worden alle records gekopieerd.

@bergen: ` (backtic) voor tabel/kolom namen, ' is voor het doorgeven van strings

[ Voor 16% gewijzigd door Shadowman op 03-03-2007 15:00 ]


  • Bergen
  • Registratie: Maart 2001
  • Laatst online: 28-11 12:23

Bergen

Spellingscontroleur

Ja je hebt gelijk van die backticks, heb 't aangepast. Nouja, eigenlijk kunnen backticks/quotes helemaal wel weg bij verdnamen en tabelnamen. Zolang je maar geen reserved namen gebruikt...

En worden nested queries dan volledig ondersteund sinds versie 5 van MySQL? Of er is alleen een losse "INSERT... SELECT"-query mogelijk? (Behalve stored procedures heb ik eigenlijk nog niet gekeken wat er nieuw is.)

Scheelt iig een boel werk. :)

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
<?php
    // Verbinden met de server

    $hostname = "localhost";
    $username = "koe";
    $password = "schaap";
    mysql_connect($hostname, $username, $password) or die(mysql_error());

    // Selecteer de database

    mysql_select_db("mijndatabase") or die(mysql_error());

    // Kopieer de gegevens van record 8 van 'oud' naar 'nieuw'

    $query = "INSERT INTO nieuw SELECT * FROM oud WHERE id = 8";

    // Die voeren we uit

    mysql_query($query) or die(mysql_error());

    // Eventueel de regel uit de oude tabel verwijderen:
    
    $query = "REMOVE FROM oud WHERE id = 8";
    mysql_query($query) or die(mysql_error());
?>


Je zit dan alleen nog even met het ID veld, die zet hij nu ook in de nieuwe tabel. Hoe zit dat eigenlijk, als zo'n ID-veld een auto-increment veld is, en je probeert hem toch erin te zetten, levert dan een foutmelding op? Of wordt dat veld genegeerd? Of maakt hij toch gewoon een regel met ID 8 aan, ook al is er al een regel met ID 8 aanwezig?

Je kunt in de query in plaats van het sterretje ook een rij met kolomnamen opgeven natuurlijk, maar als je een hele waslijst aan kolomnamen hebt...

[ Voor 84% gewijzigd door Bergen op 03-03-2007 15:20 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
We hebben speciaal voor dit soort gevallen een edit-kop Afbeeldingslocatie: http://gathering.tweakers.net/global/templates/tweakers/images/icons/edit.gif ;) Als je nog iets aan te vullen hebt op een vorige post wil ik je vriendelijk verzoeken die voortaan te gebruiken in plaats van 3 posts binnen 3 minuten te doen ;)

[ Voor 7% gewijzigd door RobIII op 03-03-2007 16:33 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1