Запись в базу данных из массива?

Рейтинг: 0Ответов: 2Опубликовано: 03.02.2023

Стоит задача записать в базу данных mysql данные из массива.

Есть вот такие данные в виде строки:

Таролог: Астролог: Хиромант:

Записываю их в массив и експлодю по двоеточию.

$str = 'Таролог: Астролог: Хиромант:';
$names = explode(": ", $str);

Теперь задача стоит записать каждое значение из массива в базу данных: Есть база с такими столбцами: id, name, place, number А так же если в массиве повторно приходят такие же данные изменять у повторившегося name значение number.

Но есть еще одно но строка может содержать уже существующие данные и не существующие к примеру так: Таролог: Астролог: Экстрасенс: И в данном случае нужно у тех кто существует обновить данные а не существующего добавить.

Помогите пожалуйста решить такую задачу.

Ответы

▲ -1
  1. Вам нужно вытащить записи из базы
  2. Преобразовать данные в массив, как вы это уже делали
  3. Если новые данные получаете от клиента, то нужно экранировать данные перед записью в базу, например mysqli_real_escape_string
  4. Сложить 2 массива старый и новый через функцию array_merge
  5. Отбросить повторяющиеся элементы через функцию array_unique
  6. Отсортировать массив через функцию usort в качестве сравнения строк можно использовать функцию strcmp
  7. Обновить запись в базе
▲ -1

Для решения этой задачи нужно использовать запросы INSERT и UPDATE в базу данных MySQL.

Запрос INSERT используется для добавления данных в таблицу. Например, чтобы добавить данные из массива в таблицу:

$sql = "INSERT INTO table_name (name, place, number) VALUES ";
foreach ($names as $name) {
    $sql .= "('$name', '', ''), ";
}
$sql = rtrim($sql, ', ');

Запрос UPDATE используется для обновления данных в таблице. Например, чтобы обновить данные из массива в таблице:

$sql = "UPDATE table_name SET number = number + 1 WHERE name IN (";
foreach ($names as $name) {
    $sql .= "'$name', ";
}
$sql = rtrim($sql, ', ');
$sql .= ")";