Доброго времени суток. Подскажите как в рабочий скрипт ниже добавить еще один параметр. Сам скрипт преднозначен для перезаписи значений в базе данных. сейчас скрипт переписывает значения из дополнительных полей, а нужно еще добавить какой-то параметр для перезаписи тайтла (заголовка статьи). сайт на движке DLE (скрин приложил). Код (Text): <?php $dbhost = "localhost"; // Хост1 $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'); // Экранируем $id = $db->real_escape_string($_POST['id']); $new_companies = $db->real_escape_string($_POST['companies']); $new_price = $db->real_escape_string($_POST['price']); $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_database_update = $db->real_escape_string($_POST['database_update']); $new_procent = $db->real_escape_string($_POST['procent']); $new_otrasli = $db->real_escape_string($_POST['otrasli']); $new_dop_podkategori = $db->real_escape_string($_POST['dop_podkategori']); $new_title_fulstor = $db->real_escape_string($_POST['title_fulstor']); $new_price_percent = $db->real_escape_string($_POST['new_price_percent']); $new_title = $db->real_escape_string($_POST['title']); $new_site_compani = $db->real_escape_string($_POST['site_compani']); $new_fax = $db->real_escape_string($_POST['fax']); $new_otpravka = $db->real_escape_string($_POST['otpravka']); // Получаем значения 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['mobile-numbers'] = $new_mobile_numbers; $data['unique-email'] = $new_unique_email; $data['database-update'] = $new_database_update; $data['procent'] = $new_procent; $data['otrasli'] = $new_otrasli; $data['dop-podkategori'] = $new_dop_podkategori; $data['title-fulstor'] = $new_title_fulstor; $data['title'] = $new_title; $data['fax'] = $new_fax; $data['site-compani'] = $new_site_compani; $data['otpravka'] = $new_otpravka; $data['new_price_percent'] = $new_price_percent; // Формируем новое значение обратно в xfields $new_xfields = ''; foreach ($data as $key => $value) { $new_xfields .= "||$key|$value"; } $new_xfields = substr($new_xfields, 2); // Обновляем бд $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(); ?> значен для перезаписи значений в базе данных. сейчас скрипт переписывает значения из дополнительных полей, а нужно еще добавить какой-то параметр для перезаписи тайтла (заголовка статьи). сайт на движке DLE (скрин приложил).
Составить SQL-запрос вручную. Отладить его в phpMyAdmin Затем сгенерировать его с помощью PHP из данных формы
всего то надо было добавить один параметр title, просто не знал как правильно синтаксис прописать. // Обновляем бд $update_query = "UPDATE dle_post SET xfields='$new_xfields', title='$new_title' WHERE id='$id'";
Аля 2005 к сожалению. @sotex2 Извини, но ты как первый день замужем. https://www.php.net/manual/ru/pdo.prepared-statements.php Isset, is_numeric и другие фильтрации как минимум, а то мало ли.
Ну, есть идейка как это дело раз и навсегда решить - добавить в printf() сотоварищи спецификатор типа %q Как бы очевидное решение. Но комьюнити не чешется. Предпочитая изобретать велосипеды, превращая самый массовый некогда продукт в недоджаву.