Перенос строки из одной таблицы в другую одним запросом?

Доброго времени суток, требуется перенести запись из одной таблицы в другую. Реализовать думаю путем копирования а затем удаления по id. Проблема в том что не получается сделать все одним запросом, сначала копирую
$sql = mysql_query("
INSERT INTO
    `orders_arc` (`cl_name`, `cl_tel`, `start_from`, `go_to`)
SELECT
	`orders`.`cl_name`, `orders`.`cl_tel`, `orders`.`start_from`, `orders`.`go_to`
FROM
    `orders` 
WHERE
    `orders`.`o_id` = 12;");


Потом удаляю
DELETE FROM `orders` WHERE `orders`.`o_id` = 12
По отдельности код работает, в одном запросе - нет

$sql = mysql_query("
INSERT INTO
    `orders_arc` (`cl_name`, `cl_tel`, `start_from`, `go_to`)
SELECT
	`orders`.`cl_name`, `orders`.`cl_tel`, `orders`.`start_from`, `orders`.`go_to`
FROM
    `orders` 
WHERE
    `orders`.`o_id` = 12
DELETE FROM `orders` WHERE `orders`.`o_id` = 12;");


Где моя ошибка?
  • Вопрос задан
  • 2458 просмотров
Решения вопроса 1
jamesgoodwin
@jamesgoodwin
Молодой разработчик
Точку с запятой пропустили:

$sql = mysql_query("
INSERT INTO
    `orders_arc` (`cl_name`, `cl_tel`, `start_from`, `go_to`)
SELECT
  `orders`.`cl_name`, `orders`.`cl_tel`, `orders`.`start_from`, `orders`.`go_to`
FROM
    `orders` 
WHERE
    `orders`.`o_id` = 12;
DELETE FROM `orders` WHERE `orders`.`o_id` = 12;


На самом деле это и шутка и правда. Вам нужно разделить два запроса точкой с запятой.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
qonand
@qonand
Software Engineer
во первых в Вашем случае это не один запрос, а все равно два которые Вы просто сразу хотите отправить в базу
во вторых запросы пишутся через точку с запятой, а у Вас после INSERT запроса точки с запятой нет
в третьих раз уж Вы хотите сразу отправлять в базу несколько запросов используйте multi-query т.к. mysql_query не поддерживает множественных запросов
в четвертых функционал который Вы пытаетесь реализовать нуждается в транзакции, поэтому я бы рекомендовал их реализовать
в пятых помоему Вам давно пора перейти на PDO ...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы