Скрыть объявление
ВАШИ ПРАВА ОГРАНИЧЕНЫ!

Зарегистрируйтесь на форуме, чтобы стать полноценным участником сообщества!

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

Тема в разделе "Свободное общение", создана пользователем MegaMonstr, 21 июн 2016.

21.06.16 в 20:20
21.06.16 в 23:54
9
3.295
0
  1. TopicStarter Overlay
    MegaMonstr

    MegaMonstr Команда форума VIP Кинотрафик v2

    Сообщения:
    1.085
    Симпатии:
    254
    Лучших ответов:
    0
    Удалил доп поля, но в базе остались ранее записанные в них данные, как их можно удалить? Может есть скрипт какой то рабочий?
    Один я нашел но он не работает, что то удаляет (якобы) но на самом деле в базе как были данные так и остаются.

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

    Код:
    <?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} записей).");
    
    
     
  2. Rockem

    Rockem Бывалый

    Сообщения:
    274
    Симпатии:
    198
    Лучших ответов:
    0
    Попробуйте перестроить все новости.
    [​IMG]
     
    • Нравится Нравится x 1
  3. TopicStarter Overlay
    MegaMonstr

    MegaMonstr Команда форума VIP Кинотрафик v2

    Сообщения:
    1.085
    Симпатии:
    254
    Лучших ответов:
    0
    Попробую, но у меня их больше 10к штук, думаю и сервак нагнется. Буду ночью пробовать
     
  4. PunPun

    PunPun VIP Кинотрафик v2

    Сообщения:
    7.433
    Симпатии:
    3.687
    Лучших ответов:
    32
  5. Intention

    Intention Местный

    Сообщения:
    2.098
    Симпатии:
    688
    Лучших ответов:
    0
    Ништяки от Gameer :D:D
     
  6. GEORGE

    GEORGE Забанен

    Сообщения:
    479
    Симпатии:
    62
    Лучших ответов:
    0
  7. PunPun

    PunPun VIP Кинотрафик v2

    Сообщения:
    7.433
    Симпатии:
    3.687
    Лучших ответов:
    32
    нет нихуясимогут и другие это сделать. я посчитал что в там ему самое место.
     
  8. TopicStarter Overlay
    MegaMonstr

    MegaMonstr Команда форума VIP Кинотрафик v2

    Сообщения:
    1.085
    Симпатии:
    254
    Лучших ответов:
    0
    Я думаю если бы он хотел это сделать, то так бы сделал. Увы, не хочет, а как говориться, хозяин барин.
    Я сейчас буду проверять, работает или нет...
    Спс Gameer
     
  9. Diablo83

    Diablo83 Бывалый

    Сообщения:
    311
    Симпатии:
    93
    Лучших ответов:
    0
    Удалить доп. поле. Перестроения публикаций. Оптимизация базы данных в админки. Сделать бекап перед этим.
     
  10. TopicStarter Overlay
    MegaMonstr

    MegaMonstr Команда форума VIP Кинотрафик v2

    Сообщения:
    1.085
    Симпатии:
    254
    Лучших ответов:
    0
    Именно так и сделал, база стала меньше на 30 мб.