Подскажите как поправить код для перезаписи значений в базе данных. код ниже. задача такая. при запуске скрипта доп. поля на движке 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(); ?> |