Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Duplikacja rekordu ze zmianą dwóch pól.
Forum PHP.pl > Forum > Przedszkole
Xart
Witam mam w bazie danych tabele a w niej rekordy i każdy z nich ma strasznie dużo kolumn. Muszę skopiować wiersz tabeli do tej samej tabeli zmieniając tylko unikalne ID (na kolejne) oraz nazwę - dopisać słowo kopia czyli np:

ID // Nazwa // Pole 1 // Pole 2

1 // produkt1 // w // ww
2 //produkt2 // sad /// asdasd

i teraz kopiuje np z warunkiem WHERE ID = 1

i odtrzymuję w tej tabeli

3 // produkt1 - KOPIA // Pole 1 // Pole 2

Da się to zrobić jakoś krócej niż wszystkie te pola do tablicy i dodawać standardowo ?

ZaXaZ
Moze nie optymalnie ale powinno dzialac:

  1. UPDATE tabela SET id=id+1
//nie mam pewosci wiec wrazie czego sprawdz na testowej
  1. ALTER TABLE tabela CHANGE kolumna nowa_nazwa varchar(30) NOT NULL


(Nie jestem pewien czy zrozumiałem pierwsze pytania)
Xart
@UP
tak ale twoim sposobem otrzymam tylko tabelę o ID 3 a ta o id 1 przestanie istnieć a mi chodzi o to, zęby mieć 2 biggrin.gif
update rekordu to wiem jak zrobić chodzi mi tylko czy da się jakoś COPY wiersz1 i robi się wiersz 3 questionmark.gif?

ok dzięki za pomoc użyję sobie mniej więcej takiej funkcji

  1. function DuplicateMySQLRecord ($table, $id_field, $id) {
  2. // load the original record into an array
  3. $result = mysql_query("SELECT * FROM {$table} WHERE {$id_field}={$id}");
  4. $original_record = mysql_fetch_assoc($result);
  5.  
  6. // insert the new record and get the new auto_increment id
  7. mysql_query("INSERT INTO {$table} (`{$id_field}`) VALUES (NULL)");
  8. $newid = mysql_insert_id();
  9.  
  10. // generate the query to update the new record with the previous values
  11. $query = "UPDATE {$table} SET ";
  12. foreach ($original_record as $key => $value) {
  13. if ($key != $id_field) {
  14. $query .= '`'.$key.'` = "'.str_replace('"','\"',$value).'", ';
  15. }
  16. }
  17. $query = substr($query,0,strlen($query)-2); // lop off the extra trailing comma
  18. $query .= " WHERE {$id_field}={$newid}";
  19. mysql_query($query);
  20.  
  21. // return the new id
  22. return $newid;
  23. }
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.