>php教程 >php手册 >在php中,怎样冲数据库导出表到json/word/xml/excel

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

WBOY
WBOY원래의
2016-06-13 10:54:38947검색

数据库信息导出: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

            $str.="{";

            $count=count($result[$i]);

            $j=1;

            foreach($result[$i] as $key=>$val) {

                if($j

                    $str.="'".$key."':'".$val."',";

                }

                elseif($j==$count) {

                    $str.="'".$key."':'".$val."'";

                }

                $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 '";

                        $sql.=$key;

                        $sql.="'='";

                        $sql.=$val."'";

                    }else {

                        $sql.="and '";

                        $sql.=$key;

                        $sql.="'='";

                        $sql.=$val."'";

                    }

                    $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='';

        $xml.="";

        $xml.="".$totalNum."";

        $xml.="";

        for($i=0;$i

            $xml.="";

            foreach($result[$i] as $key=>$val)

                $xml.="".$val."".$key.">";

            $xml.="";

        }

        

        $xml.="";

        $xml.="";

        return $xml;

    }

 

 

    /***************************************************************************

     * $table:表名

     * $mapping:数组格式头信息$map=array('No','Name','Email','Age');

     * $fileName:WORD文件名称

     * return:WORD格式文件

     **************************************************************************/

    function toWord($table,$mapping,$fileName) {

        header('Content-type: application/doc');

        header('Content-Disposition: attachment; filename="'.$fileName.'.doc"');

        echo '

       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]">

               

               

               

'.$fileName.'

               

               

';

        echo'

';

        if(is_array($mapping)) {

            foreach($mapping as $key=>$val)

                echo'

';

        }

        echo'

';

        $results=$this->findBySql('select * from '.$table);

        foreach($results as $result) {

            echo'

';

            foreach($result as $key=>$val)

                echo'

';

            echo'

';

        }

        echo'

'.$val.'
'.$val.'
';

        echo'';

        echo'';

    }

 

 

    /***************************************************************************

     * $table:表名

     * $mapping:数组格式头信息$map=array('No','Name','Email','Age');

     * $fileName:Excel文件名称

     * return:Excel格式文件

     **************************************************************************/

    function toExcel($table,$mapping,$fileName) {

        header("Content-type:application/vnd.ms-excel");

        header("Content-Disposition:filename=".$fileName.".xls");

        echo'

        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]">

       

       

       

       

       

       

';

        echo'

';

        echo'

';

        if(is_array($mapping)) {

            foreach($mapping as $key=>$val)

                echo'

';

        }

        echo'

';

        $results=$this->findBySql('select * from '.$table);

        foreach($results as $result) {

            echo'

';

            foreach($result as $key=>$val)

                echo'

';

            echo'

';

        }

        echo'

'.$val.'
'.$val.'
';

        echo'';

        echo'';

    }

 

    

    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 .= " '".addslashes($val)."',";

                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, 'r'))) {

            $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('',$sql);

        $arr=array();

        foreach($sql as $sq) {

            if($sq!="");

            $arr[]=$sq;

        }

        $ret=$arr;

        return true;

    }

 

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.