Dismiss Notice
ВАШИ ПРАВА ОГРАНИЧЕНЫ!

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

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

Discussion in 'Свободное общение' started by MegaMonstr, Jun 21, 2016.

21.06.16 в 20:20
21.06.16 в 23:54
9
3,297
0
  1. TopicStarter Overlay
    MegaMonstr

    MegaMonstr Staff Member VIP Кинотрафик v2

    Messages:
    1,085
    Likes Received:
    254
    Best Answers:
    0
    Удалил доп поля, но в базе остались ранее записанные в них данные, как их можно удалить? Может есть скрипт какой то рабочий?
    Один я нашел но он не работает, что то удаляет (якобы) но на самом деле в базе как были данные так и остаются.

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

    Code:
    <?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 Бывалый

    Messages:
    274
    Likes Received:
    198
    Best Answers:
    0
    Попробуйте перестроить все новости.
    [​IMG]
     
    • Нравится Нравится x 1
  3. TopicStarter Overlay
    MegaMonstr

    MegaMonstr Staff Member VIP Кинотрафик v2

    Messages:
    1,085
    Likes Received:
    254
    Best Answers:
    0
    Попробую, но у меня их больше 10к штук, думаю и сервак нагнется. Буду ночью пробовать
     
  4. PunPun

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

    Messages:
    7,433
    Likes Received:
    3,687
    Best Answers:
    32
  5. Intention

    Intention Местный

    Messages:
    2,098
    Likes Received:
    688
    Best Answers:
    0
    Ништяки от Gameer :D:D
     
  6. GEORGE

    GEORGE Забанен

    Messages:
    479
    Likes Received:
    62
    Best Answers:
    0
  7. PunPun

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

    Messages:
    7,433
    Likes Received:
    3,687
    Best Answers:
    32
    нет нихуясимогут и другие это сделать. я посчитал что в там ему самое место.
     
  8. TopicStarter Overlay
    MegaMonstr

    MegaMonstr Staff Member VIP Кинотрафик v2

    Messages:
    1,085
    Likes Received:
    254
    Best Answers:
    0
    Я думаю если бы он хотел это сделать, то так бы сделал. Увы, не хочет, а как говориться, хозяин барин.
    Я сейчас буду проверять, работает или нет...
    Спс Gameer
     
  9. Diablo83

    Diablo83 Бывалый

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

    MegaMonstr Staff Member VIP Кинотрафик v2

    Messages:
    1,085
    Likes Received:
    254
    Best Answers:
    0
    Именно так и сделал, база стала меньше на 30 мб.