具体的实现代码,如下:下面会给简单的说明。代码如下:<?php/*1. 配置好你的数据库连接2. 注意数据表名的前缀 默认为dede_3. 一定要先备份你的数据库 或备份dede_archives表 如产生损失本人概不负责*///数据库连接设置$ip = "localhost"; //地址$user = "jb51"; //用户名$pw = "www."; //密码$db = "jb51"; //表名$conn=mysql_connect ($ip,$user,$pw);mysql_select_db($db);mysql_query("set names gbk"); //设置编码为 GBK
//开始!获取body数据function body($id){$exec="select * from dede_addonsoft where aid = '".$id."'";$result=mysql_query($exec);$rs=mysql_fetch_object($result);$id = $rs->introduce ;return $id =$id ;}//结束!获取body数据//开始!提取变量中第一个图片地址function bodyimg($obj) {if(isset($obj)){if ( preg_match( "<img.*src=["](.*?)["].*?>", $obj, $regs ) ) { //使用获取第一幅图像地址return $obj = $regs[1] ;} else {echo "Erro:没有图片地址!<br>";return $obj = 1 ;}}}//结束!提取变量中第一个图片地址
//开始 修改rchives,插入获取的图像地址function changearchives($pic,$id) {$sql="UPDATE `dede_archives`SET `litpic` = '".$pic."'WHERE `id` = '".$id."'";$result=mysql_query($sql);if($result==1) echo "修改数据成功!<br>";else echo "修改数据失败!<br>";}//结束 修改rchives,插入获取的图像地址//显示数据表内容$exec="select * from dede_archives where typeid in(494,495,496,497,498,499,500,501,502,503,504,374,375,376,377,378,379,488) and litpic = ''"; //channel='1' 即文章频道 也可以使用typeid=''$result=mysql_query($exec); //指定栏目ID但只能是最小分类的ID, litpic = '' 意为缩略图地址为空while($rs=mysql_fetch_object($result)){
$id = $rs->ID;echo $id." ";$body = body($id); //调用函数获取 body内容$pic = bodyimg($body); //调用函数获取 body里面的第一张图片地址if ($pic<>1){changearchives($pic,$id); //调用函数插入获取的地址}}mysql_close($conn);?>我也是刚刚学PHP 上面的代码也是东拼西凑起来的 做了详细的注释 初学者也可以来看看。因为上面的代码不能自动的获取下一级目录,所以比较手工添加目录id,常用的语句有。$exec="select * from dede_archives where typeid in(1,2,3) and litpic = ''"; //channel='1' 即文章频道 也可以使用typeid=''上面的代码是获取typeid为 1和2和3的数据。如果执行修改一个id可以用下面的语句$exec="select * from dede_archives where typeid='1' and litpic = ''";如果是频道的可以用$exec="select * from dede_archives where channel='1' and litpic = ''";注意先备份,要不就不要随便测试了,注意是dedecms5.1的版本,其它的版本应该也适应。多测试(备份的前提下。)