Редактор темы

Реклама
Реклама

Как удалить данные доп поля из базы?

MegaMonstr

Команда форума
VIP Кинотрафик v2
Регистрация
27 Сен 2015
Сообщения
1.085
Рейтинг реакций
246
Баллы
83
1/3
Автор темы
Удалил доп поля, но в базе остались ранее записанные в них данные, как их можно удалить? Может есть скрипт какой то рабочий?
Один я нашел но он не работает, что то удаляет (якобы) но на самом деле в базе как были данные так и остаются.

Вот код скрипта:

Код:
<?php

/*
####################################################
Удаление содержимого доп. поля из базы.
@copyright        (c) 2013 Nevex Group
@name            uTop
@version        5.0
@link            http://nevex.pw/
####################################################
*/   

@error_reporting ( E_ALL ^ E_WARNING ^ E_NOTICE );
@ini_set ( 'display_errors', true );
@ini_set ( 'html_errors', false );
@ini_set ( 'error_reporting', E_ALL ^ E_WARNING ^ E_NOTICE );

define ( 'DATALIFEENGINE', true );

define ( 'ROOT_DIR', dirname ( __FILE__ ) );
define ( 'ENGINE_DIR', ROOT_DIR . '/engine' );

require_once ENGINE_DIR . '/classes/mysql.php';
require_once ENGINE_DIR . '/data/dbconfig.php';
require_once ENGINE_DIR . '/modules/functions.php';

$fieldName = "seasons"; // имя поля (латинскими буквами)

function xfieldssave($data) {

    $filecontents = array();
   
    foreach ($data as $key => $value) {

        $value = stripslashes($value);
        $value = str_replace("|", "&#124;", $value);
        $value = str_replace("\r\n", "__NEWL__", $value);
        $filecontents[] = $key . "|" . $value;

    }
   
    $filecontents = implode("||", $filecontents);
 
    $find = array ('/data:/i', '/about:/i', '/vbscript:/i', '/onclick/i', '/onload/i', '/onunload/i', '/onabort/i', '/onerror/i', '/onblur/i', '/onchange/i', '/onfocus/i', '/onreset/i', '/onsubmit/i', '/ondblclick/i', '/onkeydown/i', '/onkeypress/i', '/onkeyup/i', '/onmousedown/i', '/onmouseup/i', '/onmouseover/i', '/onmouseout/i', '/onselect/i', '/javascript/i', '/javascript/i' );
    $replace = array ("d&#097;ta:", "&#097;bout:", "vbscript<b></b>:", "&#111;nclick", "&#111;nload", "&#111;nunload", "&#111;nabort", "&#111;nerror", "&#111;nblur", "&#111;nchange", "&#111;nfocus", "&#111;nreset", "&#111;nsubmit", "&#111;ndblclick", "&#111;nkeydown", "&#111;nkeypress", "&#111;nkeyup", "&#111;nmousedown", "&#111;nmouseup", "&#111;nmouseover", "&#111;nmouseout", "&#111;nselect", "j&#097;vascript" );
   
    $filecontents = preg_replace( $find, $replace, $filecontents );
    $filecontents = preg_replace( "#<iframe#i", "&lt;iframe", $filecontents );
    $filecontents = preg_replace( "#<script#i", "&lt;script", $filecontents );
    $filecontents = str_replace( "<?", "&lt;?", $filecontents );
    $filecontents = str_replace( "?>", "?&gt;", $filecontents );
    $filecontents = str_replace( "$", "&#036;", $filecontents );

    return $filecontents;
}

$posts = $db->query("SELECT `id`, `xfields` FROM `" . USERPREFIX . "_post` WHERE `xfields` LIKE '%{$fieldName}%'");
$counter = 0;
while($row = $db->get_row($posts)){
   
    $row['xfields'] = trim($row['xfields']);
    $fields = xfieldsdataload($row['xfields']);
    unset($fields[$fieldName]);
    $newFields = xfieldssave($fields);
   
    //$result = ($row['xfields'] == $newFields) ? "<font color=green>OK</font>" : "<font color=red>Не совпадает</font>";
    //echo "{$row['xfields']} => {$newFields} <b>{$result}</b><br />";
   
    $newFields = $db->safesql($newFields);
    $db->query("UPDATE `" . USERPREFIX . "_post` SET `xfields` = '{$newFields}' WHERE `id` = '{$row['id']}'");
    $counter++;
}

exit("Поле {$fieldName} успешно удалено из базы данных (обработано {$counter} записей).");
 
Попробуйте перестроить все новости.
L21LRyGs6MZ7pm.png
 
Автор темы
полезная же вещь
Я думаю если бы он хотел это сделать, то так бы сделал. Увы, не хочет, а как говориться, хозяин барин.
Я сейчас буду проверять, работает или нет...
Спс Gameer
 
Удалить доп. поле. Перестроения публикаций. Оптимизация базы данных в админки. Сделать бекап перед этим.
 

Похожие темы Последние темы Популярные темы

Назад
Сверху