数据复活

作者:李悦 发表于:2009年4月10日
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明http://www.liyue.org/tech/archives/167

  某个系统管理员一不小心直接用数据库管理工具把一文章表的标题字段类型改了,导致所有文章标题不能正常显示了。上万条的数据有点懵了。之前数据库也没有备份过。试图修复数据库也没有成功。唯一的希望寄托在数据库本身的结构上。
  由于文章的部分信息在另外一个表中也有所体现,标题信息正在其中。只要将这部分信息重写回表中就可以恢复。两个表是通过ID相关联的。检索出文章对应的标题并写回原表。但是原表文章范围大于另一个表,只要少量信息不存在。能恢复大部分信息就好了。

<?php
$DB_Server = "localhost";
$DB_Username = "root";
$DB_Password = "password";
$DB_DBName = "dbname";
//$DB_TBLName = "column_article";
$Connect = @mysql_connect($DB_Server, $DB_Username, $DB_Password)
or die("Couldn't connect.");
$Db = @mysql_select_db($DB_DBName, $Connect)
or die("Couldn't select database.");
 
$sql = "Select column_article.title,column_article.articleid,article.title,article.id from column_article,article where column_article.articleid=article.id";
$ALT_Db = @mysql_select_db($DB_DBName, $Connect)
or die("Couldn't select database");
 
$result = @mysql_query($sql,$Connect)
or die(mysql_error());
 
$i = 0;
while($row = mysql_fetch_row($result))
{
$title2=$row[0];
$title2id=$row[1];
$upd = @mysql_query("update article set article.title='$title2' where article.id=$title2id",$Connect);
$i++;
}
return (true);
?>
目前还没有任何评论.