Synt,在php中,怎样冲数据库导出表到json/word/xml/excel" /> Synt,在php中,怎样冲数据库导出表到json/word/xml/excel" />
热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在php中,怎样冲数据库导出表到json/word/xml/excel

数据库信息导出:word,excel,json,xml,sql数据库恢复:从sql,从文件具体用法:首先新建测试用数据库mytest,然后在里面建张表PHP代码:以下是代码片段:----表的结构`test`--CREATETABLE`test`..."/>Synt
数据库信息导出:word,excel,json,xml,sql
  数据库恢复:从sql,从文件
 
具体用法:
 
首先新建测试用数据库mytest,然后在里面建张表 
 
PHP代码:
 
 
 
以下是代码片段:
--  
-- 表的结构 `test` 
--  
CREATE TABLE `test` ( 
  `id` int(11) NOT NULL auto_increment, 
  `name` varchar(100) NOT NULL, 
  `email` varchar(200) NOT NULL, 
  `age` int(3) NOT NULL, 
  PRIMARY KEY  (`id`) 
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; 
--  
-- 导出表中的数据 `test` 
--  
INSERT INTO `test` (`id`, `name`, `email`, `age`) VALUES  
(1, 'pjq518', [email=]'pjq518@126.com'[/email], 22), 
(2, 'xiaoyu', [email=]'xiaoyu@126.com'[/email], 21); 
 
 
1.导出ext能方便调用的json 
 
PHP代码:
 
 
 
以下是代码片段:
 $db=new db(); 
echo  $db->toExtJson('test'); 
 
//输出结果为
//{'totalCount':'2','rows':[{'id':'1','name':'pjq518','email':'pjq518@126.com','age':'22'},{'id':'2','name':'xiaoyu','email':'xiaoyu@126.com','age':'21'}]} 
 
toExtJson( $table, $start="0", $limit="10", $cOns="")有4个参数, $table为表名, $cons为条件,可以为string或array
 
 
2、导出xml 
 
PHP代码:
 
 
 
以下是代码片段:
 $db=new db(); 
echo  $db->toExtXml('test'); 
 
 
//输出结果
 
 
3、导出excel和word 
 
PHP代码:
 
 
 
以下是代码片段:
 $db=new db(); 
//toExcel 
 $map=array('No','Name','Email','Age');//表头 
 $db->toExcel('test', $map,'档案'); 
//导出word表格 
// $db->toWord('test', $map,'档案'); 
 
 
//效果如下图
 
 
 
 
 
PHP代码:
 
 
 
class Db {
    var $conn;
 
    /***************************************************************************
     * 连接数据库
     * return:MySQL 连接标识,失败返回FALSE
     **************************************************************************/
    function Db($host="localhost",$user="root",$pass="123456",$db="juren_gaokao") {
        if(!$this->cOnn=mysql_connect($host,$user,$pass))
            die("can't connect to mysql sever");
        mysql_select_db($db,$this->conn);
        mysql_query("SET NAMES 'UTF-8'");
    }
 
    /***************************************************************************
     * 执行SQL查询
     * return:查询结构集 resource
     **************************************************************************/
    function execute($sql) {
        return mysql_query($sql,$this->conn);
    }
 
    /***************************************************************************
     * 返回结构集中行数
     * return:number 数字
     **************************************************************************/
    function findCount($sql) {
        $result=$this->execute($sql);
        return mysql_num_rows($result);
    }
 
    /***************************************************************************
     * 执行SQL查询
     * return:array 数组
     **************************************************************************/
    function findBySql($sql) {
        $array=array();
        $result=mysql_query($sql);
        $i=0;
        while($row=mysql_fetch_assoc($result)) {
            $array[$i]=$row;
            $i++;
        }
        return $array;
    }
 
    /***************************************************************************
    *$con的几种情况
    *空:返回全部记录
    *array:eg. array('id'=>'1') 返回id=1的记录
    *string :eg. 'id=1' 返回id=1的记录
    * return:json 格式数据
    ***************************************************************************/
    function toExtJson($table,$start="0",$limit="10",$cOns="") {
        $sql=$this->generateSql($table,$cons);
        $totalNum=$this->findCount($sql);
        $result=$this->findBySql($sql." LIMIT ".$start." ,".$limit);
        $resultNum = count($result);//当前结果数
        $str="";
        $str.= "{";
        $str.= "'totalCount':' $totalNum',";
        $str.="'rows':";
        $str.="[";
        for($i=0;$i<$resultNum;$i++) {
            $str.="{";
            $count=count($result[$i]);
            $j=1;
            foreach($result[$i] as $key=>$val) {
                if($j<$count) {
                    $str.="&#39;".$key."&#39;:&#39;".$val."&#39;,";
                }
                elseif($j==$count) {
                    $str.="&#39;".$key."&#39;:&#39;".$val."&#39;";
                }
                $j++;
            }
 
            $str.="}";
            if ($i != $resultNum-1) {
                $str.= ", ";
            }
        }
        $str.="]";
        $str.="}";
        return  $str;
    }
 
    /***************************************************************************
     * $table:表名
     * $cons:sql条件
     * return:SQL语句
     **************************************************************************/
    function generateSql($table,$cons) {
        $sql="";//sql条件
        $sql="select * from ".$table;
        if($cons!="") {
            if(is_array($cons)) {
                $k=0;
                foreach($cons as $key=>$val) {
                    if($k==0) {
                        $sql.="where &#39;";
                        $sql.=$key;
                        $sql.="&#39;=&#39;";
                        $sql.=$val."&#39;";
                    }else {
                        $sql.="and &#39;";
                        $sql.=$key;
                        $sql.="&#39;=&#39;";
                        $sql.=$val."&#39;";
                    }
                    $k++;
                }
            }else {
                $sql.=" where ".$cons;
            }
        }
        return $sql;
    }
 
    
    /***************************************************************************
     * $table:表名
     * $cons:条件
     * return:XML格式文件
     **************************************************************************/
    function toExtXml($table,$start="0",$limit="10",$cOns="") {
        $sql=$this->generateSql($table,$cons);
        $totalNum=$this->findCount($sql);
        $result=$this->findBySql($sql." LIMIT ".$start." ,".$limit);
        $resultNum = count($result);//当前结果数
        header("Content-Type: text/xml");
        $xml=&#39;&#39;;
        $xml.="";
        $xml.="".$totalNum."";
        $xml.="";
        for($i=0;$i<$resultNum;$i++) {
            $xml.="";
            foreach($result[$i] as $key=>$val)
                $xml.="<".$key.">".$val."";
            $xml.="";
        }
        
        $xml.="";
        $xml.="";
        return $xml;
    }
 
 
    /***************************************************************************
     * $table:表名
     * $mapping:数组格式头信息$map=array(&#39;No&#39;,&#39;Name&#39;,&#39;Email&#39;,&#39;Age&#39;);
     * $fileName:WORD文件名称
     * return:WORD格式文件
     **************************************************************************/
    function toWord($table,$mapping,$fileName) {
        header(&#39;Content-type: application/doc&#39;);
        header(&#39;Content-Disposition: attachment; filename="&#39;.$fileName.&#39;.doc"&#39;);
        echo &#39;<html xmlns:o="urn:schemas-microsoft-com:office:office"
       xmlns:w="urn:schemas-microsoft-com:office:word" 
       xmlns="[url=http://www.w3.org/TR/REC-html40]http://www.w3.org/TR/REC-html40[/url]">
               
               
               
               
                &#39;;
        echo&#39;&#39;;
        if(is_array($mapping)) {
            foreach($mapping as $key=>$val)
                echo&#39;
&#39;;
        }
        echo&#39;
&#39;;
        $results=$this->findBySql(&#39;select * from &#39;.$table);
        foreach($results as $result) {
            echo&#39;
&#39;;
            foreach($result as $key=>$val)
                echo&#39;
&#39;;
            echo&#39;
&#39;;
        }
        echo&#39;
&#39;.$val.&#39;
&#39;.$val.&#39;
&#39;;
        echo&#39;&#39;;
        echo&#39;&#39;;
    }
 
 
    /***************************************************************************
     * $table:表名
     * $mapping:数组格式头信息$map=array(&#39;No&#39;,&#39;Name&#39;,&#39;Email&#39;,&#39;Age&#39;);
     * $fileName:Excel文件名称
     * return:Excel格式文件
     **************************************************************************/
    function toExcel($table,$mapping,$fileName) {
        header("Content-type:application/vnd.ms-excel");
        header("Content-Disposition:filename=".$fileName.".xls");
        echo&#39;
        xmlns:x="urn:schemas-microsoft-com:office:excel"
        xmlns="[url=http://www.w3.org/TR/REC-html40]http://www.w3.org/TR/REC-html40[/url]">
       
       
       
       
       
        &#39;;
        echo&#39;&#39;;
        echo&#39;
&#39;;
        if(is_array($mapping)) {
            foreach($mapping as $key=>$val)
                echo&#39;
&#39;;
        }
        echo&#39;
&#39;;
        $results=$this->findBySql(&#39;select * from &#39;.$table);
        foreach($results as $result) {
            echo&#39;
&#39;;
            foreach($result as $key=>$val)
                echo&#39;
&#39;;
            echo&#39;
&#39;;
        }
        echo&#39;
&#39;.$val.&#39;
&#39;.$val.&#39;
&#39;;
        echo&#39;&#39;;
        echo&#39;&#39;;
    }
 
    
    function Backup($table) {
        if(is_array ($table)) {
            $str="";
            foreach($table as $tab)
                $str.=$this->get_table_content($tab);
            return $str;
        }else {
            return $this->get_table_content($table);
        }
    }
 
    
    /***************************************************************************
     * 备份数据库数据到文件
     * $table:表名
     * $file:文件名
     **************************************************************************/
    function Backuptofile($table,$file) {
        header("Content-disposition: filename= $file.sql");//所保存的文件名
        header("Content-type: application/octetstream");
        header("Pragma: no-cache");
        header("Expires: 0");
        if(is_array ($table)) {
            $str="";
            foreach($table as $tab)
                $str.=$this->get_table_content($tab);
            echo $str;
        }else {
            echo $this->get_table_content($table);
        }
    }
    
    function Restore($table,$file="",$cOntent="") {
        //排除file,content都为空或者都不为空的情况
        if(($file==""&&$cOntent=="")||($file!=""&&$content!=""))
            echo"参数错误";
        $this->truncate($table);
        if($file!="") {
            if($this->RestoreFromFile($file))
                return true;
            else
                return false;
        }
        if($content!="") {
            if($this->RestoreFromContent($content))
                return true;
            else
                return false;
        }
    }
    
    //清空表,以便恢复数据
    function truncate($table) {
        if(is_array ($table)) {
            $str="";
            foreach($table as $tab)
                $this->execute("TRUNCATE TABLE  $tab");
        }else {
            $this->execute("TRUNCATE TABLE  $table");
        }
    }
    
    function get_table_content($table) {
        $results=$this->findBySql("select * from $table");
        $temp = "";
        $crlf="rn";
        foreach($results as $result) {
            /*(";
          foreach( $result as  $key=> $val)
          {
            $schema_insert .= " `". $key."`,";
          }
           $schema_insert = ereg_replace(", $", "",  $schema_insert);
           $schema_insert .= ") 
            */
            $schema_insert = "INSERT INTO   $table VALUES (";
            foreach($result as $key=>$val) {
                if($val != "")
                    $schema_insert .= " &#39;".addslashes($val)."&#39;,";
                else
                    $schema_insert .= "NULL,";
            }
            $schema_insert = ereg_replace(", $", "", $schema_insert);
            $schema_insert .= "); $crlf";
            $temp = $temp.$schema_insert ;
        }
        return $temp;
    }
 
    
    function RestoreFromFile($file) {
        if (false !== ($fp = fopen($file, &#39;r&#39;))) {
            $sql_queries = trim(fread($fp, filesize($file)));
            $this->splitMySqlFile($pieces, $sql_queries);
            foreach ($pieces as $query) {
                if(!$this->execute(trim($query)))
                    return false;
            }
            return true;
        }
        return false;
    }
    
    function RestoreFromContent($content) {
        $cOntent= trim($content);
        $this->splitMySqlFile($pieces, $content);
        foreach ($pieces as $query) {
            if(!$this->execute(trim($query)))
                return false;
        }
        return true;
    }
    
    function splitMySqlFile(&$ret, $sql) {
        $sql= trim($sql);
        $sql=split(&#39;&#39;,$sql);
        $arr=array();
        foreach($sql as $sq) {
            if($sq!="");
            $arr[]=$sq;
        }
        $ret=$arr;
        return true;
    }
 

推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了如何在MySQL中将零值替换为先前的非零值的方法,包括使用内联查询和更新查询。同时还提供了选择正确值的方法。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 在数据分析工作中,我们通常会遇到这样的问题,一个业务部门由若干业务组构成,需要筛选出每个业务组里业绩前N名的业务员。这其实是一个分组排序的 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
author-avatar
寓言定格e
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有