Подскажите как поправить код для перезаписи значений в базе данных. код ниже. задача такая. при запуске скрипта доп. поля на движке DLE в базе данных перезаписываются, но если еще раз запустить скрипт, то в базе данных будет затираться (удаляться) первое доп.поле со значением. как прописать условие, чтобы перезаписывались те доп.поля, которые прописаны только для выполнения в скрипте. для наглядности записал видео -
Сам код.
Сам код.
| Код |
|---|
<?php
$dbhost = "localhost"; // Хост1
$dbuser = "*****_basekomp"; // Пользователь баз данных
$dbpassword = "*****"; // Пароль
$dbname = "*****"; // Имя баз данных
// Подключение к базе
$db = new mysqli($dbhost, $dbuser, $dbpassword, $dbname);
// Проверка подключения с баз данных
if ($db->connect_errno) {
echo '<p>Не удалось подключиться к базе данных!</p>';
echo $db->connect_error;
exit;
}
$db->set_charset('utf8');
// Экранируем
$id = $db->real_escape_string($_POST['id']);
$new_companies = $db->real_escape_string($_POST['companies']);
$new_price = $db->real_escape_string($_POST['price']);
// $new_title = $db->real_escape_string($_POST['title_fulstor']);
$new_total_phones = $db->real_escape_string($_POST['total_phones']);
$new_unique_email = $db->real_escape_string($_POST['unique_email']);
$new_mobile_numbers = $db->real_escape_string($_POST['mobile_numbers']);
$new_site_compani = $db->real_escape_string($_POST['site_compani']);
// Получаем значения xfields
$query = "SELECT xfields FROM dle_post WHERE id='$id'";
$result = $db->query($query);
if ($result) {
$row = $result->fetch_assoc();
$xfields = $row['xfields'];
// Разбиваем xfields на пары
$pairs = explode('||', $xfields);
$data = [];
foreach ($pairs as $pair) {
$parts = explode('|', $pair);
if (count($parts) == 2) {
$data[$parts[0]] = $parts[1];
}
}
// Меняем нужные значения
$data['price'] = $new_price;
$data['companies'] = $new_companies;
$data['total-phones'] = $new_total_phones;
$data['unique-email'] = $new_unique_email;
$data['site-compani'] = $new_site_compani;
$data['mobile-numbers'] = $new_mobile_numbers;
// Формируем новое значение обратно в xfields
$new_xfields = '';
foreach ($data as $key => $value) {
$new_xfields .= "||$key|$value";
}
$new_xfields = substr($new_xfields, 1);
// Обновляем бд
$update_query = "UPDATE dle_post SET xfields='$new_xfields' WHERE id='$id'";
$update_result = $db->query($update_query);
if ($update_result) {
echo "Данные успешно обновлены!";
} else {
echo "Ошибка при обновлении данных: " . $db->error;
}
} else {
echo "Ошибка при выполнении запроса: " . $db->error;
}
// Закрываем соединение с базой данных
$db->close();
?>
|
