【www.gdgbn.com--dedecms教程】

今天 我的网站无意间出现dedecms 更新附加表 `_addonsoft` 时出错这个提示,出现情况是进入下载页面下载软件时提示“” ,后台编辑软件时是详细的内容说明调用不出来,其它没问题,经过一个多小时的分析,终于找出一总是,不过这是我的总是,不一定大家都一样。

第一步,我找到plus/download.php教程文件,找到$arcrow = getonearchive($aid);函数,因为反应没有值所以就会提示没有找到页面。

找到include/common.func.php里面的,getonearchive发现,他有一句,

$chrow = $dsql->getone($cs);

 if(!is_array($chrow)) {
  return $rearr;
 }
 else {
  if(empty($chrow["maintable"])) $chrow["maintable"] = "#@__archives";
 }

我把经过分析是查找这条sql

 $cs ="select arc.*,ch.maintable,ch.addtable,ch.issystem from `#@__arctiny` arc left join `#@__channeltype` ch on ch.id=arc.channel where arc.id="$aid" ";

 

发现是`#@__arctiny表,有总是,通过phpmyadmin查询发现,这个表的记录比其它二个主表少了3000条记录,原因就在这里了,经过分析我们可以把3g_archives表的相关字段所有可以再次导入到`#@__arctiny表,下面是我写的一段简单导入代码

include("cn.php");
$sql ="select id,typeid,typeid2,sortrank,senddate,mid from d_archives  order by id desc";
$query = mysql教程_query( $sql );
$i=$j=0;
$t =time();
while(  $rs = mysql_fetch_array( $query ) )
{
 $e = "select id from d_arctiny where id=".$rs["id"];
 $ers = mysql_query( $e ) or die( mysql_error().$e);
 if(! mysql_num_rows( $ers ) )
 {
  mysql_query("insert into d_arctiny(id,typeid,typeid2,arcrank,channel,senddate,sortrank,mid)values("".$rs["id"]."","".$rs["typeid"]."","".$rs["typeid2"]."","0","3","".$rs["sortrank"]."","".$rs["senddate"]."","".$rs["mid"]."")  ") or die( mysql_error());
  $i++;
 }
 else
 {
  $j++;
 }
 
}
echo "共导入数据".$i."条!,存在记录".$j."条,共有记录".($i+$j)."条";
?>

这样我在服务器上执行了一次,再去查看刚出的dedecms 更新附加表 `_addonsoft` 时出错,编辑文档出错的问题全部搞定。

本站原创文章 http://www.111cn.net  转载必须注明来源,否则必究

本文来源:http://www.gdgbn.com/wangyezhizuo/28931/