Запись из 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.