Как перезаписать значений в базе данных
Страницы: 1
Как перезаписать значений в базе данных
Подскажите правильный ли скрипт ниже для перезаписи доп. полей в базе данных на движке DLE. Задача такая,чтобы при помощи скрипта можно было перезаписать в доп.полях значения. есть три доп.поля - это title, total-phones, price и в них нужно у каждой новости перезаписать значения. в данный момент скрипт не работает, подскажите, что не так.

---------------------------------------------------------



Код
<?php

$dbhost = "localhost"; // Хост
$dbuser = "*****"; // Пользователь баз данных
$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');

$_POST['id']    = $db->real_escape_string($_POST['id']);
$_POST['title']    = $db->real_escape_string($_POST['title']);
$_POST['price'] = $db->real_escape_string($_POST['price']);
$_POST['total-phones'] = $db->real_escape_string($_POST['total-phones']);


$title = $db->query("UPDATE dle_post  SET xfields='{$_POST['total-phones']}' WHERE id='{$_POST['id']}'");
$price = $db->query("UPDATE dle_post  SET xfields='{$_POST['price']}' WHERE id='{$_POST['id']}'");
$phones = $db->query("UPDATE dle_post  SET xfields='{$_POST['total-phones']}' WHERE id='{$_POST['id']}'");
ты этим скриптом потрешь все остальные допполя у новости. в dle колонка xfields хранит данные не раздельно, а одной строкой через разделитель || (типа price|100||phone|123). твой update тупо сносит всё содержимое ячейки и записывает туда только телефон.

чтобы работало через sql, алгоритм другой:
1. достать текущую строку (select xfields from...).
2. разобрать её в массив (explode по ||, потом по |).
3. найти нужный ключ, заменить значение.
4. собрать строку обратно и только тогда обновлять.

а вообще писать сырой mysqli код для cms — это дичь. у dle есть встроенный класс $db и api для работы с новостями, юзай их методы. они сами умеют парсить xfields и экранировать данные, не надо изобретать велосипед с дырами в безопасности.
Страницы: 1
Читают тему (гостей: 10, пользователей: 0, из них скрытых: 0)
Новые темыОбъявленияСвободное общение
22:24 Ютуб выкашивает каналы за "Серийный контент". Как не отлететь? // Советы по выживанию 
22:10 Как перезаписать значений в базе данных 
21:27 Кто-то научился фильтровать новых ИИ-ботов? Метрика сходит с ума 
21:17 Как такое возможно 
17:42 LOSPOLLOS.COM - Конвертим по рецепту Хайзенберга. Dating, Mainstream, Binary Options 
16:55 Началось? На Reddit паника: Google массово рассылает варнинги за AI-контент 
16:11 Минус 30% дохода? Chrome теперь скрывает футерные баннеры (Sticky Ads) 
18:42 CryptoGraph — Анонимный обмен криптовалют без KYC и AML 
17:40 - Вечные ссылки с трастовых сайтов 2024 проверен FastTrust 
16:10 SwapPix.io - быстрый и безопасный обменник криптовалют. 
13:23 Баллы сервисов накрутки соц.сетей Likest.ru Vto.pe Bosslike.ru Магазин https://minishop.rents.ac/ 
12:07 EM24.biz - обмен валют 
11:33 BIGPROXY.SHOP - Резидентные Ротационные Backconnect Proxy USA EUROPA MIX [Безлимитный трафик] 
08:41 Мониторинг обменников Сrypto-scout.io 
19:29 Gartner обещал смерть SEO к 2026 году. Открываем метрику и проверяем 
10:45 Подтягиваем физкультурку 
08:58 Осталось 3-5 месяцев до блокировки YouTube в России, — заявил Клименко 
08:09 Владельцы "китайцев" 3-леток, признавайтесь честно — сгнили или едут? 
17:27 Курс доллара упал ниже 85 рублей 
11:00 Наши машинки 
07:38 Партнерская программа ООО МКК Тачфинанс.