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("|", "|", $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 ("data:", "about:", "vbscript<b></b>:", "onclick", "onload", "onunload", "onabort", "onerror", "onblur", "onchange", "onfocus", "onreset", "onsubmit", "ondblclick", "onkeydown", "onkeypress", "onkeyup", "onmousedown", "onmouseup", "onmouseover", "onmouseout", "onselect", "javascript" );
$filecontents = preg_replace( $find, $replace, $filecontents );
$filecontents = preg_replace( "#<iframe#i", "<iframe", $filecontents );
$filecontents = preg_replace( "#<script#i", "<script", $filecontents );
$filecontents = str_replace( "<?", "<?", $filecontents );
$filecontents = str_replace( "?>", "?>", $filecontents );
$filecontents = str_replace( "$", "$", $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} записей).");

