Копиране на запис в MySQL

  • Автор Автор ivok
  • Начална дата Начална дата

ivok

Bashmaistora
Пример: Имам 10 различни записа в базата и искам да направя 11-ти запис, който да е същия като 10-ия запис, след което да си го редактирам в PhpMyAdmin.

Тоест чрез PhpMyAdmin да копирам последния запис в нов запис и да си го редактирам после. Имам много продукти, които са идентични и искам по-лесно да ги вкарвам, защото през админ панела на CMS-а си е бавно.

Или пък може да се направи някакъв скрипт за качване на инфо в базата? Всъщност може би това е най-добрият вариант?
 
Последно редактирано:
Re: Копиране на запис в MySQL

Код:
insert into ime_na_tablicata(ime_na_pole, ime_na_drugo_pole) (SELECT ime_na_pole, ime_na_drugo_pole FROM ime_na_tablicata order by ime_na_autoincrement_klucha DESC LIMIT 1)

това е ако имаш ключ, autoincrement. броя и имената на полета които вмъкваш трябва да са еднакви на броя на полетата които селектираш. Не избирай полето което е ключ и е autoincrement. 🙂

Ако нямаш ключ който е autoincrement в което се съмнявам може да направиш така :

Код:
insert into ime_na_tablicata (SELECT * FROM ime_na_tablicata order by ime_na_kluch DESC LIMIT 1)

//едит: драго ме е изпреварил 🙂
 
Re: Копиране на запис в MySQL

В такъв случай трябва да е нещо такова :

Код:
INSERT INTO table SELECT * FROM table WHERE id=10 ON DUPLICATE KEY UPDATE id=id+1;
 
Re: Копиране на запис в MySQL

Ето ти и функция, ако искаш да го правиш през скрипт...

PHP:
function DuplicateMySQLRecord ($table, $id_field, $id) {
    // load the original record into an array
    $result = mysql_query("SELECT * FROM {$table} WHERE {$id_field}={$id}");
    $original_record = mysql_fetch_assoc($result);
    
    // insert the new record and get the new auto_increment id
    mysql_query("INSERT INTO {$table} (`{$id_field}`) VALUES (NULL)");
    $newid = mysql_insert_id();
    
    // generate the query to update the new record with the previous values
    $query = "UPDATE {$table} SET ";
    foreach ($original_record as $key => $value) {
        if ($key != $id_field) {
            $query .= '`'.$key.'` = "'.str_replace('"','\"',$value).'", ';
        }
    } 
    $query = substr($query,0,strlen($query)-2); # lop off the extra trailing comma
    $query .= " WHERE {$id_field}={$newid}";
    mysql_query($query);
    
    // return the new id
    return $newid;
}
 
Re: Копиране на запис в MySQL

@drago и bobby - аз знам номера на последния запис - в случая 197. Искам да направя 198 запис , със същите полета и същото съдържание на полетата. Това ли ще направят тези команди, които сте написали?

@kobreti - ще пробвам с този скрипт да видя дали става

А може ли да се направи скрипт да чете например от ексел файл полетата и да ги качва в базата?

INSERT INTO table SELECT * FROM table WHERE `id`=197 ON DUPLICATE KEY UPDATE `id`=198 - ето така го направих, но 197 изчезна и остана само 198
 
Последно редактирано:
Re: Копиране на запис в MySQL

за ос комерс отдавна имам скрипта дето чете ексел и качва в БД.
Собствена разработка, с малко пипане ще стане 6
 
Re: Копиране на запис в MySQL

Не е за ОСкомерс, иначе се бях сетил за твоя.

Намерих друг лесен вариант през PhpMyAdmin - отварям запис 197 за редакция , редактирам и накрая вместо Записване, натискам Запиши като нов ред. 🙂
 
Re: Копиране на запис в MySQL

Може да направиш и нещо друго - копни си INSERT заявката от phpMyAdmin-а, копирай я няколко пъти в един тексто в файл, поправи каквото не ти харесва и после импортни накуп целия файл.
 
Re: Копиране на запис в MySQL

Ъ? Само аз ли имам select box в phpmyadmin, където си избирам дали редактираното поле да бъде ъпдейтнато или вмъкнато като ново?

images
 
Re: Копиране на запис в MySQL

Два поста по-нагоре го написах същото.😉
 

Back
Горе