есть таблица в которой редактируются данные и кнопка, по которой это всё сохраняется. Запрос изначально выглядел таким образом:
$SQL = "UPDATE Users SET phone='$phone', name='$name', surname='$surname', second_name='$second_name', manager_comment='$manager_comment', delivery_adress='$delivery_adress', delivery_time='$delivery_time', delivery_date='$delivery_date', courier='$courier' WHERE id='$form_id'";
$result = mysqli_query($link, $SQL);
Но он записывает только 1 строку. Как перестроить запрос таким образом, чтобы он делал множественную запись по каждому id?
Как правильно отметил DaemonHK, нет никакой проблемы запустить запрос в цикле.
Это будет простым и понятным вариантом, для его реализации не нужно "разобираться, как передать данные в виде такой таблицы". В программировании всегда следует избегать ненужного переусложнения кода на пустом месте.
А вот для подготовленных выражений, про которые тебе говорят уже в который раз, несколько запросов в цикле - это как раз очень хороший случай, чтобы их применить.
Тем более что любой хитровыдуманный способ имеет свои недостатки. В частности, способ, предложенный Sergey Nudnov, выполняет запросы insert. А это значит, что если искомая строка не будет найдена в таблице, то этот запрос добавит её. Чего в принципе быть не должно.
На самом деле, конечно, существует способ корректно сделать все апдейты одним запросом без нежелательных вставок. Запрос для этого будет и вовсе зубодробительный. И, как я уже говорил, никакой прямо-таки страшной необходимости выполнять все обновления обязательно одним запросом. Десяток запросов в цикле, особенно с использованием подготовленных выраженийЙ, особенно завернутых в транзакцию ещё никому систему не обрушил.
Подготовьте данные в виде таблицы и используйте INSERT INTO
:
INSERT INTO Users (id, phone, name, surname, second_name, manager_comment, delivery_adress, delivery_time, delivery_date, courier)
VALUES
('1', '416-000-0000', 'Vasily', 'Pupkin', 'Michael', 'No comments', '123 Street', '10:00', '1 apr', 'Быстрый'),
('5', '416-000-0005', 'Сергей', 'Нуднов', 'Михайлович', 'No comments', '777 Avenue', '18:00', '1 apr', 'Супер Быстрый'),
('2', '416-000-0001', 'Ivan', 'Ivanov', 'Ivanovich', 'No comments', '345 Street', '11:00', '1 apr', 'Быстрый')
ON DUPLICATE KEY UPDATE
phone=VALUES(phone),
name=VALUES(name),
surname=VALUES(surname),
second_name=VALUES(second_name),
manager_comment=VALUES(manager_comment),
delivery_adress=VALUES(delivery_adress),
delivery_time=VALUES(delivery_time),
delivery_date=VALUES(delivery_date),
courier=VALUES(courier)
Подразумевается, что id
это Primary key
! Иначе не сработает.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Вывожу древообразное меню из mysqlПо клику на категорию, выезжают подкатегории (если такие есть)
Интересует такой вопрос, например, есть две таблицы в базе данных
Допустим есть произвольный тип, созданный с помощью register_post_type('custom_type'