今天 我的网站无意间出现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 转载必须注明来源,否则必究