ist wirklich nur ein anno-dazumal codeschnippsel, verbindung zur datenbank musst du aufbauen, dann suchstring setzen und durch was er ersetzen soll, wenn die tabellen nen primary-key haben klappts mit sicherheit, allerdings ersetzt das script in allen spalten, weis ja ned ob das ein problem ist, falls du keinen primary-key hast kann ich nicht garantieren ob es funktioniert als ich das script geschrieben habe, ist mir damals aufgefallen dass in manchen fällen es tabellen ohne nicht sauber ersetzt, allerdings hab ich damals nciht die zeit gehabt das zu überprüfen und hab die eine tabelle dann immer hänisch gemacht weil sie nur 3 einträge hatte.
ist leider auch nur ne unkommentierte version, andere hab ich vieleicht noch zuhause, danach schau ich morgen mal falls noch interesse besteht.
ist zwar wohl nicht ganz die lösung deines problems, aber vieleicht kannst du ja einen teil davon gebrauchen, bzw ihn abwandeln.
ist leider auch nur ne unkommentierte version, andere hab ich vieleicht noch zuhause, danach schau ich morgen mal falls noch interesse besteht.
ist zwar wohl nicht ganz die lösung deines problems, aber vieleicht kannst du ja einen teil davon gebrauchen, bzw ihn abwandeln.
PHP-Code:
<?
$SearchString = mysql_escape_string('');
$ReplaceString = mysql_escape_string('');
$counter = 0;
echo 'Start
';
function sql_query($query,$file,$line,$debug=FALSE) {
global $querycounter,$__DEBUGQUERYS,$_qs;
$sql = mysql_query($query) or die('
'."\n".'[b]Query: [/b]'.$query.'
'."\n".$file.' Line: '.$line.'
'."\n".'Error:'.mysql_error());
($__DEBUGQUERYS) OR ($debug) ? print('
'."\n".''.$query.'
'."\n".'[b]['.$file.' Line: '.$line.'][/b] RESULTS:<font color="red">[b]'.@mysql_num_rows($sql)."[/b]</font>\n".'
'):null;
$querycounter++;
return $sql;
}
function is_text_field($field) {
if(eregi('varchar',$field['Type']) OR eregi('blob',$field['Type']) OR eregi('text',$field['Type'])) {
Return true;
}
else {
Return false;
}
}
function scantable($table) {
global $SearchString,$ReplaceString,$counter;
$query = "SHOW FIELDS FROM `".$table."`";
$sql = sql_query($query,__FILE__,__LINE__);
$fields = array();
while($data = mysql_fetch_assoc($sql)) {
if(is_text_field($data)) {
$fields[] = $data['Field'];
}
if($data['Key'] == 'PRI') {
$PRIMARY = $data;
}
}
if(count($fields) > 0) {
$search = '';
$fieldlist = '';
$where = '';
$update = '';
foreach($fields as $val) {
$search .= "`".$val."` LIKE '%".$SearchString."%' OR \n";
$fieldlist .= "`".$val."`, ";
}
if(isset($PRIMARY)) {
$fieldlist .= "`".$PRIMARY['Field']."`, ";
}
$query2 = "SELECT ".substr($fieldlist,0,-2)." FROM `".$table."` WHERE ".substr($search,0,-5);
$sql2 = sql_query($query2,__FILE__,__LINE__);
while($data2 = mysql_fetch_assoc($sql2)) {
foreach($fields as $val) {
$data3[$val] = str_replace($SearchString,$ReplaceString,$data2[$val]);
$update .= "`".$val."` = '".addslashes($data3[$val])."', \n";
$where .= "`".$val."` = '".addslashes($data2[$val])."' AND \n";
}
if(isset($PRIMARY)) {
$where = "`".$PRIMARY['Field']."` = '".addslashes($data2[$PRIMARY['Field']])."'";
$query3 = "UPDATE `".$table."` SET ".substr($update,0,-3)." WHERE ".$where;
}
else {
$query3 = "UPDATE `".$table."` SET ".substr($update,0,-3)." WHERE ".substr($where,0,-6);
}
$counter += mysql_affected_rows();
sql_query($query3,__FILE__,__LINE__);
}
}
}
$query = "SHOW TABLES";
$sql = sql_query($query,__FILE__,__LINE__);
while($data = mysql_fetch_assoc($sql)) {
scantable($data['Tables_in_'.$DBNAME]);
}
echo 'Fertig';
echo '
Datensätze gefunden und versucht zu verändert: '.$counter;
?>
Kommentar