TechBlogSD - Все для WordPress и WEB разработки
WEB и WordPress инструкции, новости, обзоры тем и плагинов

Массовое обновление вставки в MySQL с использованием PHP

2 664

Иногда нам нужно вставить большой набор данных в таблицу базы данных. Существует несколько способов массовой вставки данных в таблицу MySQL.

Использование одного оператора INSERT на строку довольно неэффективен. Вместо этого мы можем собрать один оператор INSERT с несколькими строками.

Сегодня я собираюсь показать, как выполнить массовую вставку в таблицу MySQL с помощью PHP.

MySQL запрос для вставки нескольких строк

Операторы INSERT, использующие синтаксис VALUES, могут вставлять несколько строк. Для этого включите несколько списков значений столбцов, каждый из которых заключен в скобки и разделен запятыми.

Следующий запрос вставляет несколько строк.

INSERT INTO tbl_name (a,b,c) VALUES (1,2,3), (4,5,6), (7,8,9);

Источник

Массовая вставка с использованием PHP

Вы можете использовать PHP, чтобы подготовить оператор MySQL для вставки нескольких строк, а также выполнить этот запрос.

Конкатенация PHP может быть использована для построения запроса. Вот простой фрагмент.

Вышеуказанный фрагмент вставляет несколько строк. Кроме того, вы также можете использовать функцию implode(), чтобы избежать конкатенации строк.

Однако в этом фрагменте есть серьезный недостаток. Настоящая проблема возникает, когда в таблице много столбцов, а длина запроса превышает значение max_allowed_packet в mysql . Вы можете столкнуться с предупреждением следующим образом:

Warning: Error while sending QUERY packet. PID=33735

Чтобы проверить ‘max_allowed_packet’, вы можете просто выполнить следующую инструкцию.

SHOW VARIABLES LIKE 'max_allowed_packet';

Чтобы избежать этого, вы можете построить внутренний цикл для запуска запроса. Вот как это сделать:

До сих пор мы узнали, как выполнить массовую вставку, используя несколько операторов INSERT. Однако это не лучший способ вставить объемные данные.

Если вам не нужно манипулировать данными перед их вставкой, вы всегда можете использовать mysql ‘ LOAD DATA . Даже если вам нужно манипулировать данными перед вставкой, вы можете сгенерировать CSV-файл после манипуляции и вставить, используя LOAD DATA .

Массовое обновление

Для массового обновления вы можете использовать конструкцию ON DUPLICATE KEY UPDATE. Запрос будет выглядеть следующим образом:

INSERT INTO `table_name` (id, col) VALUES (1, 'val1'), (2, 'val2'), (3, 'val3') ON DUPLICATE KEY UPDATE col = VALUES(col);

Мы можем легко построить подобный тип запроса, используя PHP. Позволяет использовать массив , содержащий ключевое значение для создания запроса. Вот фрагмент.

Кроме того, вы можете использовать конструкцию CASE в операторе UPDATE. Тогда запрос будет выглядеть примерно так:

UPDATE tbl_coupons SET code = (CASE id WHEN 1 THEN 'ABCDE' WHEN 2 THEN 'GHIJK' WHEN 3 THEN 'EFGHI' END) WHERE id IN(1, 2 ,3);

Таким образом, мы можем вставить и обновить несколько строк в таблицу MySQL, используя PHP.

Источник записи: https://thedebuggers.com

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее