Запись в базу данных из массива?
Стоит задача записать в базу данных mysql данные из массива.
Есть вот такие данные в виде строки:
Таролог: Астролог: Хиромант:
Записываю их в массив и експлодю по двоеточию.
$str = 'Таролог: Астролог: Хиромант:';
$names = explode(": ", $str);
Теперь задача стоит записать каждое значение из массива в базу данных: Есть база с такими столбцами: id, name, place, number А так же если в массиве повторно приходят такие же данные изменять у повторившегося name значение number.
Но есть еще одно но строка может содержать уже существующие данные и не существующие к примеру так: Таролог: Астролог: Экстрасенс: И в данном случае нужно у тех кто существует обновить данные а не существующего добавить.
Помогите пожалуйста решить такую задачу.
Ответы (2 шт):
- Вам нужно вытащить записи из базы
- Преобразовать данные в массив, как вы это уже делали
- Если новые данные получаете от клиента, то нужно экранировать данные перед записью в базу, например mysqli_real_escape_string
- Сложить 2 массива старый и новый через функцию array_merge
- Отбросить повторяющиеся элементы через функцию array_unique
- Отсортировать массив через функцию usort в качестве сравнения строк можно использовать функцию strcmp
- Обновить запись в базе
Для решения этой задачи нужно использовать запросы 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 .= ")";