ホームページ > バックエンド開発 > PHPチュートリアル > PHPでデータベーステーブルをjson/word/xml/excel_PHPにエクスポートする方法チュートリアル

PHPでデータベーステーブルをjson/word/xml/excel_PHPにエクスポートする方法チュートリアル

WBOY
リリース: 2016-07-14 10:08:18
オリジナル
915 人が閲覧しました

データベース情報エクスポート:word、excel、json、xml、sql

データベースのリカバリ: SQL から、ファイルから
具体的な使用方法:
まず新しいテストデータベース mytest を作成し、次にその中にテーブルを作成します
PHPコード:
以下はコードスニペットです:
--
-- テーブル構造「テスト」
--
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、
主キー (`id`)
) ENGINE=MyISAM デフォルト CHARSET=utf8 AUTO_INCREMENT=3;
--
-- テーブル `test` 内のデータをエクスポートします
--
`test` (`id`、`name`、`email`、`age`) の値を挿入します
(1, 'pjq518', [email=]'pjq518@126.com'[/email], 22),
(2, 'xiaoyu', [email=]'xiaoyu@126.com'[/email], 21);
1. extで簡単に呼び出せるJSONをエクスポートします
PHPコード:
以下はコードスニペットです:
$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 は文字列または配列の条件です
2. XMLをエクスポートする
PHPコード:
以下はコードスニペットです:
$db=新しいデータベース();
echo $db->toExtXml('test');
//結果を出力する
3. ExcelとWordをエクスポートします
PHPコード:
以下はコードスニペットです:
$db=新しいdb();
//エクセルへ
$map=array('No','Name','Email','Age');//ヘッダー
$db->toExcel('test', $map,'file');
//単語テーブルをエクスポートする
// $db->toWord('test', $map,'file');
//効果は以下の通りです
PHPコード:
クラス DB {
var $conn;
/*************************************************** * ***************************
* データベースに接続します
* return: MySQL 接続 ID、失敗した場合は FALSE を返します
************************************************ ***** *************************/
function Db($host="localhost",$user="root",$pass="123456",$db="juren_kamao") {
if(!$this->conn=mysql_connect($host,$user,$pass))
die("mysql サーバーに接続できません");
mysql_select_db($db,$this->conn);
mysql_query("SET NAMES 'UTF-8'");
}
/*************************************************** * ***************************
* SQLクエリを実行します
* return: クエリ構造セットリソース
************************************************ **************************/
関数実行($sql) {
mysql_query($sql,$this->conn);を返す
}
/*********************************************** ***************************
* 構造体セット内の行数を返します
* 戻り値:番号番号
************************************************ *************************/
function findCount($sql) {
$result=$this->execute($sql);
return mysql_num_rows($result);
}
/*************************************************** * ***************************
* SQLクエリを実行します
* 戻り値: 配列 配列
************************************************ ***** *************************/
関数 findBySql($sql) {
$array=array();
$result=mysql_query($sql);
$i=0;
while($row=mysql_fetch_assoc($result)) {
$array[$i]=$row;
$i++;
}
$array;
を返す
}
/*************************************************** * ***************************
*$conのいくつかの状況
*空: すべてのレコードを返します
*array: 例: 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':'right$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 ステートメント
************************************************ **************************/
functiongenerateSql($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.=" ここで ".$cons;
}
}
$sql;
を返す
}
/*************************************************** * ***************************
* $table: テーブル名
* $cons: 状態
* 戻り値: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.="<".$key.">".$val."";
$xml.="";
}
$xml.="";
$xml.="";
$xml を返す;
}
/*************************************************** * ***************************
* $table: テーブル名
* $mapping: 配列形式のヘッダー情報 $map=array('No','Name','Email','Age');
* $fileName: WORDファイル名
* 戻り値: 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 ファイル名
* 戻り値: 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);
$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("有効期限: 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="") {
//除外ファイル、コンテンツ都が空または者都でない場合の情况
if(($file==""&&$content=="")||($file!=""&&$content!=""))
echo"パラメータ错误";
$this->truncate($table);
if($file!="") {
if($this->RestoreFromFile($file))
true を返す;
それ以外
false を返す;
}
if($content!="") {
if($this->RestoreFromContent($content))
true を返す;
それ以外
false を返す;
}
}
//清空表,便恢复データセット
関数 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)."',";
それ以外
$schema_insert .= "NULL,";
}
$schema_insert = ereg_replace(", $", "", $schema_insert);
$schema_insert .= "); $crlf";
$temp = $temp.$schema_insert ;
}
$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)))
false を返す;
}
true を返す;
}
false を返す;
}
function RestoreFromContent($content) {
$content = トリム($content);
$this->splitMySqlFile($pieces, $content);
foreach ($pieces as $query) {
if(!$this->execute(trim($query)))
false を返す;
}
true を返す;
}
function splitMySqlFile(&$ret, $sql) {
$sql= トリム($sql);
$sql=split('',$sql);
$arr=array();
foreach($sql as $sq) {
if($sq!="");
$arr[]=$sq;
}
$ret=$arr;
true を返す;
}

www.bkjia.com本当http://www.bkjia.com/PHPjc/477787.html技術記事データベース情報のエクスポート: word、excel、json、xml、sql データベースの復元: SQL から、ファイルから 具体的な使用方法: まず新しいテスト データベース mytest を作成し、次にその中にテーブルを作成します PHP コード:...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート