php ±¸·ÝÊý¾Ý¿â´úÂë(Éú³Éword,excel,json,xml,sql)

µ¥±í±¸·Ý

¡¡¡¡´úÂ룺

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡<?php

¡¡¡¡class Db

¡¡¡¡{

¡¡¡¡var $conn;

¡¡¡¡function Db($host="localhost",$user="root",$pass="root",$db="test")

¡¡¡¡{

¡¡¡¡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'");

¡¡¡¡}

¡¡¡¡function execute($sql)

¡¡¡¡{

¡¡¡¡return mysql_query($sql,$this->conn);

¡¡¡¡}

¡¡¡¡function findCount($sql)

¡¡¡¡{

¡¡¡¡$result=$this->execute($sql);

¡¡¡¡return mysql_num_rows($result);

¡¡¡¡}

¡¡¡¡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µÄ¼Ç¼

¡¡¡¡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.="'".$key."':'".$val."',";

¡¡¡¡}

¡¡¡¡elseif($j==$count)

¡¡¡¡{

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

¡¡¡¡}

¡¡¡¡$j++;

¡¡¡¡}

¡¡¡¡$str.="}";

¡¡¡¡if ($i != $resultNum-1) {

¡¡¡¡$str.= ",";

¡¡¡¡}

¡¡¡¡}

¡¡¡¡$str.="]";

¡¡¡¡$str.="}";

¡¡¡¡return $str;

¡¡¡¡}

¡¡¡¡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;

¡¡¡¡}

¡¡¡¡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 version=\"1.0\"  encoding=\"utf-8\" ?>\n";

¡¡¡¡$xml.="<xml>\n";

¡¡¡¡$xml.="\t<totalCount>".$totalNum."</totalCount>\n";

¡¡¡¡$xml.="\t<items>\n";

¡¡¡¡for($i=0;$i<$resultNum;$i++){

¡¡¡¡$xml.="\t\t<item>\n";

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

¡¡¡¡$xml.="\t\t\t<".$key.">".$val."</".$key.">\n";

¡¡¡¡$xml.="\t\t</item>\n";

¡¡¡¡}

¡¡¡¡$xml.="\t</items>\n";

¡¡¡¡$xml.="</xml>\n";

¡¡¡¡return $xml;

¡¡¡¡}

¡¡¡¡//Êä³öword±í¸ñ

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

¡¡¡¡{

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

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

¡¡¡¡echo '<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]">

¡¡¡¡<head>

¡¡¡¡<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

¡¡¡¡<title>'.$fileName.'</title>

¡¡¡¡</head>

¡¡¡¡<body>';

¡¡¡¡echo'<table border=1><tr>';

¡¡¡¡if(is_array($mapping))

¡¡¡¡{

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

¡¡¡¡echo'<td>'.$val.'</td>';

¡¡¡¡}

¡¡¡¡echo'</tr>';

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

¡¡¡¡foreach($results as $result)

¡¡¡¡{

¡¡¡¡echo'<tr>';

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

¡¡¡¡echo'<td>'.$val.'</td>';

¡¡¡¡echo'</tr>';

¡¡¡¡}

¡¡¡¡echo'</table>';

¡¡¡¡echo'</body>';

¡¡¡¡echo'</html>';

¡¡¡¡}

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

¡¡¡¡{

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

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

¡¡¡¡echo'<html xmlns:o="urn:schemas-microsoft-com:office:office"

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

¡¡¡¡<head>

¡¡¡¡<meta http-equiv="expires" content="Mon, 06 Jan 1999 00:00:01 GMT">

¡¡¡¡<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">

¡¡¡¡<!--[if gte mso 9]><xml>

¡¡¡¡<x:ExcelWorkbook>

¡¡¡¡<x:ExcelWorksheets>

¡¡¡¡<x:ExcelWorksheet>

¡¡¡¡<x:Name></x:Name>

¡¡¡¡<x:WorksheetOptions>

¡¡¡¡<x:DisplayGridlines/>

¡¡¡¡</x:WorksheetOptions>

¡¡¡¡</x:ExcelWorksheet>

¡¡¡¡</x:ExcelWorksheets>

¡¡¡¡</x:ExcelWorkbook>

¡¡¡¡</xml><![endif]-->

¡¡¡¡</head>

¡¡¡¡<body link=blue vlink=purple leftmargin=0 topmargin=0>';

¡¡¡¡echo'<table width="100%" border="0" cellspacing="0" cellpadding="0">';

¡¡¡¡echo'<tr>';

¡¡¡¡if(is_array($mapping))

¡¡¡¡{

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

¡¡¡¡echo'<td>'.$val.'</td>';

¡¡¡¡}

¡¡¡¡echo'</tr>';

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

¡¡¡¡foreach($results as $result)

¡¡¡¡{

¡¡¡¡echo'<tr>';

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

¡¡¡¡echo'<td>'.$val.'</td>';

¡¡¡¡echo'</tr>';

¡¡¡¡}

¡¡¡¡echo'</table>';

¡¡¡¡echo'</body>';

¡¡¡¡echo'</html>';

¡¡¡¡}

¡¡¡¡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);

¡¡¡¡}

¡¡¡¡}

¡¡¡¡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="<br>";

¡¡¡¡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;

¡¡¡¡}

¡¡¡¡}

¡¡¡¡$db=new db();

¡¡¡¡// Éú³É word

¡¡¡¡//$map=array('No','Name','Email','Age');

¡¡¡¡//echo  $db->toWord('test',$map,'µµ°¸');

¡¡¡¡// Éú³É Excel

¡¡¡¡//$map=array('No','Name','Email','Age');

¡¡¡¡//echo  $db->toExcel('test',$map,'µµ°¸');

¡¡¡¡// Éú³É Xml

¡¡¡¡//echo  $db->toExtXml('test',0,20);

¡¡¡¡// Éú³É Json

¡¡¡¡//echo  $db->toExtJson('test',0,20);

¡¡¡¡//±¸·Ý

¡¡¡¡//echo $db->Backuptofile('test','backup');

¡¡¡¡?>

¡¡¡¡Õû±í±¸·Ý

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡$link = mysql_connect(DB_HOST,DB_USER,DB_PASS);

¡¡¡¡$tables = mysql_list_tables(DB_NAME);

¡¡¡¡$cachetables = array(); $tableselected = array();

¡¡¡¡while ($table = mysql_fetch_row($tables))

¡¡¡¡{

¡¡¡¡$cachetables[$table[0]] = $table[0];

¡¡¡¡$tableselected[$table[0]] = 1;

¡¡¡¡}

¡¡¡¡$table = $cachetables;

¡¡¡¡$filename =  DB_NAME . "_" . date("Y_m_d_H_i_s") . ".sql";

¡¡¡¡$path = "sql/" . $filename;

¡¡¡¡$filehandle = fopen($path, "w");

¡¡¡¡$result = mysql_query("SHOW tables");

¡¡¡¡while ($currow = mysql_fetch_array($result))

¡¡¡¡{

¡¡¡¡if (isset($table[$currow[0]]))

¡¡¡¡{

¡¡¡¡sqldumptable($currow[0], $filehandle);

¡¡¡¡fwrite($filehandle, "\n\n\n");

¡¡¡¡}

¡¡¡¡}

¡¡¡¡fclose($filehandle);

¡¡¡¡$update_data = array('filename' => $filename, 'postdate' => mktime());

¡¡¡¡$db->insert('backup_db', $update_data);

¡¡¡¡// data dump functions

¡¡¡¡function sqldumptable($table, $fp = 0)

¡¡¡¡{

¡¡¡¡$tabledump = "DROP TABLE IF EXISTS " . $table . ";\n";

¡¡¡¡$result = mysql_fetch_array(mysql_query("SHOW CREATE TABLE " . $table));

¡¡¡¡//echo "SHOW CREATE TABLE $table";

¡¡¡¡$tabledump .= $result[1] . ";\r\n";

¡¡¡¡if ($fp) {

¡¡¡¡fwrite($fp, $tabledump);

¡¡¡¡} else {

¡¡¡¡echo $tabledump;

¡¡¡¡}

¡¡¡¡// get data

¡¡¡¡$rows = mysql_query("SELECT * FROM " . $table);

¡¡¡¡// $numfields=$DB->num_fields($rows);

¡¡¡¡$numfields = mysql_num_fields($rows);

¡¡¡¡while ($row = mysql_fetch_array($rows)) {

¡¡¡¡$tabledump = "INSERT INTO " . $table . " VALUES(";

¡¡¡¡$fieldcounter = -1;

¡¡¡¡$firstfield = 1;

¡¡¡¡// get each field's data

¡¡¡¡while (++$fieldcounter < $numfields) {

¡¡¡¡if (!$firstfield) {

¡¡¡¡$tabledump .= ", ";

¡¡¡¡} else {

¡¡¡¡$firstfield = 0;

¡¡¡¡}

¡¡¡¡if (!isset($row[$fieldcounter])) {

¡¡¡¡$tabledump .= "NULL";

¡¡¡¡} else {

¡¡¡¡$tabledump .= "'" . mysql_escape_string($row[$fieldcounter]) . "'";

¡¡¡¡}

¡¡¡¡}

¡¡¡¡$tabledump .= ");\n";

¡¡¡¡if ($fp) {

¡¡¡¡fwrite($fp, $tabledump);

¡¡¡¡} else {

¡¡¡¡echo $tabledump;

¡¡¡¡}

¡¡¡¡}

¡¡¡¡mysql_free_result($rows);

¡¡¡¡}

¡¡¡¡µ¼ÈëÊý¾Ý¿â

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡<?php

¡¡¡¡/************

¡¡¡¡*

¡¡¡¡PHPµ¼Èë.sqlÎļþ

¡¡¡¡ÔËÐа汾:php5,php4 ʹÓõÄʱºòÇëÑ¡Ôñ

¡¡¡¡×÷Õß:panxp

¡¡¡¡Óʼþ:[email protected]

¡¡¡¡*

¡¡¡¡*************/

¡¡¡¡$file_dir = dirname(__FILE__);

¡¡¡¡$file_name = "2010-05-09-bak.sql";

¡¡¡¡$conn = mysql_connect(DB_HOST,DB_USER,DB_PASS);

¡¡¡¡mysql_select_db(DB_NAME, $conn);

¡¡¡¡/** PHP5 °æ±¾ **/

¡¡¡¡$get_sql_data = file_get_contents($file_name, $file_dir);

¡¡¡¡/**

¡¡¡¡* PHP4 °æ±¾

¡¡¡¡if(file_exists($file_dir."/".$file_name))

¡¡¡¡{

¡¡¡¡$get_sql_data = fopen($file_dir."/".$file_name,"r");

¡¡¡¡if(!$get_sql_data)

¡¡¡¡{

¡¡¡¡echo "²»ÄÜ´ò¿ªÎļþ";

¡¡¡¡}

¡¡¡¡else

¡¡¡¡{

¡¡¡¡$get_sql_data = fread($get_sql_data, filesize ($file_dir."/".$file_name));

¡¡¡¡}

¡¡¡¡}

¡¡¡¡***/

¡¡¡¡$explode = explode(";", $get_sql_data);

¡¡¡¡$cnt = count($explode);

¡¡¡¡for ($i=0; $i<$cnt; $i++)

¡¡¡¡{

¡¡¡¡$sql = $explode[$i];

¡¡¡¡$result = mysql_query($sql);

¡¡¡¡mysql_query("set names 'utf8'");

¡¡¡¡if ($result) {

¡¡¡¡echo "³É¹¦:".$i."¸ö²éѯ<br>";

¡¡¡¡} else {

¡¡¡¡echo "µ¼Èëʧ°Ü:".mysql_error();

¡¡¡¡}

¡¡¡¡}

¡¡¡¡?>