login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Row(s) kopieren tussen 2 tabellen (Opgelost)

Offline Guardian - 28/08/2008 01:22
Avatar van GuardianNieuw lid Hello,

Ben al even aan het googlen, heb al meerdere sql query's gevonden maar ze blijken niet echt geschikt.

Wat ik eigenlijk wil doen is:

row met ID='1' van table_a exact kopieren naar table_b

Dank bij voorbaat

3 antwoorden

Gesponsorde links
Offline Wim - 28/08/2008 02:05 (laatste wijziging 28/08/2008 02:06)
Avatar van Wim Crew algemeen
  1. <?php
  2. $datatable = 'table_a';
  3. $targettable = 'table_b';
  4.  
  5. mysql_connect('localhost', 'root', '') or die(mysql_error());
  6. mysql_select_db('database') or die(mysql_error());
  7.  
  8. //script start hier
  9. $fields = array();
  10. $qFields = mysql_query('SHOW columns FROM '.$datatable) or die(mysql_error());
  11. while($q = mysql_fetch_object($qFields))
  12. {
  13. $fields[] = $q->Field;
  14. }
  15. $i = 0;
  16. $qData = mysql_query('SELECT * FROM '.$datatable);
  17. while ($q = mysql_fetch_array($qData))
  18. {
  19. $data = array();
  20. foreach ($fields as $field)
  21. {
  22. $data[] = $q[$field];
  23. }
  24. $dataArray[] = '\''.implode('\', \'',$data);
  25. $i++;
  26. }
  27.  
  28. mysql_query('INSERT INTO '.$targettable.' ('.implode(', ', $fields).') VALUES ('.implode('), (', $dataArray).')');


heb enkel de laatste query niet getest, maar ik denk dat de structuur wel klopt, anders moet je volgens mij de komma nog verwijderen... met een echo kreeg ik dit resultaat:
INSERT INTO table_b (id, imdb, title) VALUES ('5', '0478087', '21 (2008)), ('6', '0478088', '508 Nelson (2006)), ('7', '0478089', '9/11/03: A Day in the Life of New York (2005))

als het niet werkt moet je de laatste query door dit vervangen:
  1. mysql_query('INSERT INTO '.$targettable.' ('.implode(', ', $fields).') VALUES ('.implode(') (', $dataArray).')');


succes!
Offline Berten - 28/08/2008 07:46 (laatste wijziging 28/08/2008 07:48)
Avatar van Berten PHP beginner
  1. INSERT INTO table_b (SELECT * FROM table_a WHERE id=1)


dit gaat als de tabellen gelijk zijn

  1. INSERT INTO table_b (table_b.fied1,table_b.field2) (SELECT table_a.field1,table_a.field2 FROM tabe_a WHERE id=1)


Gebruik zoiets as de tabellen niet identiek zijn van structuur
Offline Guardian - 28/08/2008 22:37
Avatar van Guardian Nieuw lid bedankt!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.221s