2013-10-27 4 views
3

Я пытаюсь переместить данные из одной базы данных (регистрации) в другую, когда пользователь нажимает кнопку с именем delete. (Я хочу, чтобы переместить данные в таблицу с именем заархивированные)Переместить данные из одной таблицы MySQL в другую

Вот что я попробовал (найденные с помощью Google)

$result=mysql_query("Insert Into archived (select * from registrations WHERE id=$id") ; 
$row = mysql_fetch_array($result); 

Это не смещают его ... может кто-нибудь помочь?

+1

У вас одинаковое количество столбцов в обеих таблицах? – Mihai

+1

Таблицы идентичны. –

+0

Они находятся в одном и том же месте? Также удалите круглые скобки. – Mihai

ответ

4

Во-первых, вы пропустили одну скобку, которые вы не должны использовать в этом случае на всех

Изменить строку запроса

Insert Into archived (select * from registrations WHERE id=$id) 
        ^         ^

или просто

Insert Into archived select * from registrations WHERE id=$id 

SQLFiddle demo

Во-вторых, INSERT не возвращает результирующий набор, поэтому вы не должны использовать mysql_fetch_array().

В-третьих, если ваше намерение было переместить не только для копирования данных, но и для удаления строки, которую вы скопировали впоследствии.


Теперь вы можете поместить все это в хранимой процедуре

DELIMITER $$ 
CREATE PROCEDURE move_to_archive(IN _id INT) 
BEGIN 
    START TRANSACTION; 
    INSERT INTO archived 
    SELECT * 
     FROM registrations 
    WHERE id = _id; 
    DELETE 
     FROM registrations 
    WHERE id = _id; 
    COMMIT; 
END$$ 
DELIMITER ; 

Пример использования:

CALL move_to_archive(2); 

Вот SQLFiddle демо

+0

Привет, я отредактировал код для вашего, все еще не работает? –

+0

Есть ли у вас какие-либо ошибки? – peterm

+0

@peterm Не должно быть 'WHERE id = '$ id'" '? –

0

Запрос вы пытаетесь просто копирует информацию из одной таблицы t другой. Затем вы должны удалить его из первой таблицы:

INSERT INTO archived 
SELECT * FROM registrations WHERE id = $id; 

DELETE FROM registrations WHERE id = $id; 
+0

Я запустил этот код, он удалил его из таблицу регистрации, но не переместили ее в архивированный? –

+0

@ user2418857 Вам, вероятно, нужно обернуть ваш '$ id' в кавычки, подобный этому: SELECT * FROM register WHERE id = '$ id';' и то же самое для 'DELETE ' –

Смежные вопросы