@ikfah012
Не самый умный парень в этом чате

Как копировать строку в MySQL?

Привет.
Мне нужно из формы сделать апдейт одной строки и скопировать эту же строку с новым id(автоинкремент), но с другим значением поля delivery_date.
Пытался так:
require_once('db.php');

if(isset($_POST['perenos']))
{
    $form_id = (int)$_POST['form_id'];
    $delivery_adress = strip_tags(trim($_POST['delivery_adress']));
    $delivery_time = strip_tags(trim($_POST['delivery_time']));
    $delivery_date = strip_tags(trim($_POST['delivery_date']));

    $sql = "CREATE TEMPORARY TABLE temp_table AS SELECT * FROM Users WHERE id='$form_id';
    UPDATE temp_table SET delivery_adress='$delivery_adress', delivery_time='$delivery_time', delivery_date='$delivery_date' WHERE id='$form_id';
    INSERT INTO Users SELECT * FROM temp_table;
    DROP TEMPORARY TABLE temp_table;
    UPDATE Users SET delivery_status=3, delivery_adress='$delivery_adress', delivery_time='$delivery_time' WHERE id='$form_id'";
    $result = mysqli_query($link, $sql);
    if ($result) {
        header('Location:cargo.php');
    }
    else {
        printf("Ошибка: %s\n", mysqli_error($link));
    }
}

На выходе получаем
Ошибка: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE temp_table SET delivery_adress='Боровицкая', delivery_time='31'' at line 2


Изначально код был только такой и всё прекрасно работало:
UPDATE Users SET delivery_status=3, delivery_adress='$delivery_adress', delivery_time='$delivery_time' WHERE id='$form_id'";

Т.е. я где-то накосячил во временной таблице. Помогите, пожалуйста, первый раз такое делаю.
  • Вопрос задан
  • 2124 просмотра
Решения вопроса 1
@ikfah012 Автор вопроса
Не самый умный парень в этом чате
Нужно было использовать не mysqli_query, а mysqli_multi_query.
mysqli_query делает один запрос, mysqli_multi_query - 1 и более.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
INSERT INTO `Users` (..., `delivery_address`, `delivery_time`, `delivery_date`)
  SELECT ..., :deliveryAddress, :deliveryTime, :deliveryDate
    FROM `Users`
    WHERE `id` = :formId
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы