Запись из unput c разделителем "," в Mysql

Всем привет! Не могу понять как записать данные разделённые "," из input в mysql.

Я понимаю как записывать одно значение в одну строку, но не могу понять как записать данные через запятую в разные строки(ячейки).

$data = explode(', ', $_POST['all_add'] );

foreach ($data as $value) {
     $query = mysqli_query($connect, "INSERT INTO `emails` (`UserEmails`) VALUES ('$value')");
     {
     echo "Успешно добавил!";
     }
}

Так же пробую так. Он делит значения из input и обрабатывает каждое, которое написано через запятую. Но значения не попадают в базу. Куда нужно передать $value в этом запросе?

foreach ($data as $value) {
     $query = mysqli_query($connect, "INSERT INTO `emails` (`UserEmails`)
     SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(@csv_value, ',', nums.num), ',', -1)
     FROM ( SELECT 1 num UNION SELECT 2 UNION ... UNION SELECT NNN ) nums");
     {
     echo "Успешно добавил!";
     }
}

Проблема решена! Что бы положить данные в таблицу, нужно $value помесить в ещё один запрос на добавление в таблицу.

$add = mysqli_query($connect, "INSERT INTO `emails` (`UserEmails`) VALUES ('$value')");

Спасибо всем кто помог.

Версия MySQL - 5.7


Ответы (1 шт):

Автор решения: Akina
INSERT INTO table (column)
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(@csv_value, ',', nums.num), ',', -1)
FROM ( SELECT 1 num UNION SELECT 2 UNION ... UNION SELECT NNN ) nums
-- WHERE nums.num <= 1 + LENGTH(@csv_value) - LENGTH(REPLACE(@csv_value, ',', ''))

Подзапрос генерации num для 500 значений разумнее создать как JOIN трёх подзапросов по 8 чисел от 0 до 7.

→ Ссылка