今天我的网站无意间出现dedecms 更新附加表 `_addonsoft` 时出错这个提示,出现情况是进入下载页面下载软件时提示“”,后台编辑软件时是详细的内容说明调用不出来,其它没问题,经过一个多小时的分析,终于找出一方法,不过这是我的总结,不一定大家都一样.
第一步,我找到plus/download.php文件,找到$arcrow = getonearchive($aid);函数,因为反应没有值所以就会提示没有找到页面.
找到include/common.func.php里面的,getonearchive发现,他有一句.
- $chrow = $dsql->getone($cs);
- if(!is_array($chrow)) {
- return $rearr;
- } //开源软件:Vevb.com
- else {
- if(emptyempty($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表,下面是我写的一段简单导入代码:
- <?php
- 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` 时出错,编辑文档出错的问题全部搞定.
新闻热点
疑难解答