Есть масив который хочу разобрать и записать в новую БД. Все что я пробовал не дало ожидаемого результата, а подозрение , что это намного проще чем я думаю, у меня есть.
Array (
[0] => (
[ID] => 959
[datakey] => 606
[key] => keyname1
[value] => valuename1
[group] => tst
)
[1] => (
[ID] => 960
[datakey] => 606
[key] => keyname2
[value] => valuename2
[group] => tst
)
[2] => (
[ID] => 961
[datakey] => 606
[key] => keyname3
[value] => valuename3
[group] => tst2
)
[3] => (
[ID] => 962
[datakey] => 607
[key] => keyname1
[value] => valuename1
[group] => tst
)
)
....
Нужно сохранить это в базу данных таким образом
id | datakey | tst (group) | tst2 (group) | ...
-----------------------------------------------------------------------------
| 606 | keyname1 -> valuename1, keyname3 -> valuename3 ...
keyname2 -> valuename2 ...
-----------------------------------------------------------------------------
| 607 | keyname1 -> valuename1, | ...
Сначала сформируем новый массив с данными:
$result = [];
foreach ($data as $array) {
$content = $result[$array['datakey']][$array['group']];
$value = implode(' ', [$array['key'], '->', $array['value']]);
$result[$array['datakey']][$array['group']] = empty($content) ? $value : $content . ', ' . $value;
}
И после этого добавим новые строки в таблицу в БД:
foreach ($result as $key => $row) {
$tstValue = $row['tst'] ?? '';
$tst2Value = $row['tst2'] ?? '';
// Формируем SQL-запрос на вставку данных
$query = <<<SQL
INSERT INTO `table` SET `datakey` = $key, `tst` = '{$tstValue}', `tst2` = '{$tst2Value}';
SQL;
// И здесь выполняем этот запрос
mysqli_query($link, $query);
}
[!] Второй цикл представлен только в качестве примера, разумеется, вы должны по возможности добавлять данные одним запросом, а не в цикле, и проверять входящие значения, перед вставкой в БД.
Есть такая прекрасная библиотека для работы с MySQL: https://github.com/Vasiliy-Makogon/Database . Посмотрите документацию, может упростить решение вашей задачи.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Недавно начал учить Java и постоянно сталкиваюсь с ошибками которых не могу исправить, поэтому прошу помощиВот код:
Есть два класса: Main и CyclesИз класса Cycles методом get() должно передаваться значение переменной SecSycles в класс Main в переменную MainCycle, но её значение...
Дано - входящий List<Integer>По нему нужно пройтись через Stream, если сумма всех чисел чётная - удалить все чётные