之前存文本的数据是用的默许的文章模型,newstext字段存储在主表,现在需求将其转换为数据库格局,存储在副表,幸亏“夏威夷海盗”的帖子,http://bbs.phome.net/showthread-13-81898-0.html
参阅这篇帖子的办法做了测验,基本上是能够的,可是存在问题,主要是php的file函数将文本读取后是以数组方式存在的,简直每段文字存储到一个数组字段中,依照帖子供给的计划终究只能转化第一个数组中的第一位,后来参阅帝国程序供给的几个函数稍加修正,完成了这个作业;
代码如下
<?php error_reporting(E_ERROR|E_WARNING|E_PARSE); @set_time_limit(1000000);//设置超时时刻,越长越好 //*********************程序开端******************** //阐明:需求现在帝国后台模型设置的当地,在附表设置一个newstext1字段,等数据导入成功之后,再将原newstext字段删去,并将newstext1字段修正为newstext。 //400条数据,大约也就一秒钟左右; $kai=$_POST['kai']; functionReadFiletext($filepath){ $filepath=trim($filepath); $htmlfp=@fopen($filepath,"r"); $string=@fread($htmlfp,@filesize($filepath)); @fclose($htmlfp); return$string; } functionGetTxtFieldText($pagetexturl){ $text=ReadFiletext($pagetexturl); $text=substr($text,12);//去除exit return$text; } //装备数据库参数 mysql_connect("localhost","root","");//本机数据库用户名和暗码 mysql_select_db("mydatabase");//本机数据库名, mysql_query("setnames'utf8'"); //数据表第一条信息的ID $a=mysql_query("selectidfromwecms_articleorderbyidasclimit1"); $num1=mysql_result($a,0); //数据表最终一条信息的ID $b=mysql_query("selectidfromwecms_articleorderbyiddesclimit1"); $num2=mysql_result($b,0); if($kai==1){ //循环逐条处理 for($i=$num1;$i<$num2;$i++){ $sql="selectnewstextfromwecms_articlewhereid=".$i; if($result=mysql_query($sql)){ $r=mysql_fetch_object($result); $text=$r->newstext; //判别是否是存文本的信息 if(strlen($text)==42&&preg_match("/^[0-9a-zd/]*$/i",$text)){ $pagetexturl="d/txt/".$text.".php";//由于帝国存文本中有exit中止,所以需求用读文件的办法去读取代码,文本的途径要正确,存在本文件所以目录下的子目录"d/txt/"下 $text=GetTxtFieldText($pagetexturl); //过滤帝国存文本生成的exit中止代码,运用文本中的内容替换数据库中相应的数据值 $wurl="updatewecms_article_data_1setnewstext1='".$text."'whereid=".$i; $write=mysql_db_query("mydatabase",$wurl); } } } echo"OK,搞定!"; } ?> <formmethod="post"action="index9.php"> <inputtype=submitname=okvalue="从<?=$num1?>开端处理,到<?=$num2?>完毕.点击开端处理"> <inputtype=hiddenname="kai"value=1> </form>
声明:有的资源均来自网络转载,版权归原作者所有,如有侵犯到您的权益 请联系邮箱:123456@qq.com 我们将配合处理!
原文地址:帝国CMS二次开发内容存文本转存数据库方法发布于2022-06-23 07:43:18