ASP论坛转discuz!PHP论坛研究三 |
------------------------------------------------
阅读本文前请首先阅读
http://www.17php.com/bbs/show_title.php?id=1181
http://www.17php.com/bbs/show_title.php?id=1182
------------------------------------------------
接上文:
转换所有帖子
conv_title.php
<?php
//Written by www.17php.com
//welcome to bbs.17php.com
$myid=mysql_connect("localhost","root","1234");
mysql_select_db("discuz2",$myid);
$id=odbc_connect("bbs","","");
echo "->连接到mysql数据库成功!<br>";
echo "->准备构建一个临时表(该表为转换临时所用,转换完成后会自动删除,请勿手工删除)<br>";
mysql_query("drop table temptable2");
mysql_query("create table temptable2(befores int(4),afters int(4))");
echo "->临时表temptable2创建成功<br>";
if(!$id){
echo "<font color=red>->无法连接到ACCESS数据库</font><br>";
exit;
}else{
echo "->连接到ACCESS数据源成功!<br>";
if($result=odbc_exec($id,"select * from Forum_Topic")){
echo "->准备转换论坛主题表:<br><font color=red>转换时间取决于数据量大小,如时间较长请耐心等待</font><br>";
$i=0;
$k=0;
echo " ->1、直接拷贝数据:<br>";
while(odbc_fetch_row($result)){
$sql="insert into cdb_threads values('',"; //tid
$sql.="'".odbc_result($result,"Forum_ID")."',"; //fid
$sql.="'0',";
$sql.="'0',";
$sql.="'".odbc_result($result,"T_AUTHOR")."',"; //作者
$sql.="'".odbc_result($result,"T_SUBJECT")."',"; //subject
$sql.="'".strtotime(odbc_result($result,"T_Posttime"))."',";
$sql.="'".strtotime(odbc_result($result,"T_DATE"))."',";
$sql.="'".odbc_result($result,"T_LAST_POSTER")."',";
$sql.="'".odbc_result($result,"T_VIEW_COUNT")."',";
$sql.="'".odbc_result($result,"T_Reply_Count")."',";
$sql.="'0',";
$sql.="'0',";
$sql.="'".odbc_result($result,"TOPIC_ID")."',";
$sql.="'',";
$sql.="''";
$sql.=")";
mysql_query($sql,$myid);
$sql="insert into cdb_posts values('',"; //fid
$sql.="'".odbc_result($result,"TOPIC_ID")."',"; //tid
$sql.="'',"; //pid
$sql.="'0',";
$sql.="'0',";
$sql.="'".odbc_result($result,"T_AUTHOR")."',"; //AUTHOR
$sql.="'".odbc_result($result,"T_SUBJECT")."',"; //subject
$sql.="'".strtotime(odbc_result($result,"T_Posttime"))."',";
$sql.="'".odbc_result($result,"T_MESSAGE")."',";
$sql.="'".odbc_result($result,"T_IP")."',";
$sql.="'0',";
$sql.="'0',";
$sql.="'0',";
$sql.="'0',";
$sql.="'0',";
$sql.="'0'";
$sql.=")";
mysql_query($sql,$myid);
$sql="select * from cdb_threads where closed='".odbc_result($result,"TOPIC_ID")."'";
$tst1=mysql_query($sql,$myid);
$tst2=mysql_fetch_array($tst1,MYSQL_ASSOC);
$sql="insert into temptable2 values(".odbc_result($result,"TOPIC_ID").",".$tst2["tid"].")";
mysql_query($sql,$myid);
if(($i%500)==0){
$k=$k+1;
echo "<br>>>完成:500×".$k.":";
}
$i=$i+1;
}
mysql_query("update cdb_threads set closed=''");
echo "<br>共转换主题:".$i."条。<br>";
echo " ->2、开始按照临时表内容进行数据一致性对齐操作:<br>";
$sql="select * from temptable";
$rrr=mysql_query($sql);
while($rrr2=mysql_fetch_array($rrr,MYSQL_ASSOC)){
$sql="update cdb_threads set fid=".$rrr2["afters"]." where fid=".$rrr2["befores"];
mysql_query($sql);
echo " ->、原来id为".$rrr2["befores"]."的板块内容已经对齐到新板块".$rrr2["afters"]."<br>";
}
echo "<br>---->准备统计目前各板块的主题、回复数";
$sql="select fid,count(*) as counts from cdb_threads group by fid";
$t853=mysql_query($sql);
while($t85=mysql_fetch_array($t853,MYSQL_ASSOC)){
$sql="update cdb_forums set threads=".$t85["counts"]." where fid=".$t85["fid"];
mysql_query($sql);
echo "板块".$t85["fid"]."主题数".$t85["counts"]."设置成功!<br>";
}
echo "<br>---->各板块的主题数更新成功!";
echo "全部转换工作完成,删除以前创建的临时表temptable....<br>";
mysql_query("drop table temptable");
echo "删除temptable成功,全部主题转换完毕<br>";
}else{
echo "->access数据库查询失败!";
exit;
}
}
?>
(未完待续) |
|
|