[php]导出数据库方法源代码范例
[php]导出数据库方法源代码范例
[php]导出数据库方法源代码范例 (1)定义一个db_dump函数如下:
- <?PHP
- function db_dump($host,$user,$pwd,$db) {
- $mysqlconlink = mysql_connect($host,$user,$pwd , true);
- if (!$mysqlconlink)
- echo sprintf('No MySQL connection: %s',mysql_error())."<br/>";
- mysql_set_charset( 'utf8', $mysqlconlink );
- $mysqldblink = mysql_select_db($db,$mysqlconlink);
- if (!$mysqldblink)
- echo sprintf('No MySQL connection to database: %s',mysql_error())."<br/>";
- $tabelstobackup=array();
- $result=mysql_query("SHOW TABLES FROM `$db`");
- if (!$result)
- echo sprintf('Database error %1$s for query %2$s', mysql_error(), "SHOW TABLE STATUS FROM `$db`;")."<br/>";
- while ($data = mysql_fetch_row($result)) {
- $tabelstobackup[]=$data[0];
- }
- if (count($tabelstobackup)>0) {
- $result=mysql_query("SHOW TABLE STATUS FROM `$db`");
- if (!$result)
- echo sprintf('Database error %1$s for query %2$s', mysql_error(), "SHOW TABLE STATUS FROM `$db`;")."<br/>";
- while ($data = mysql_fetch_assoc($result)) {
- $status[$data['Name']]=$data;
- }
- if ($file = fopen("$db.sql", 'wb')) {
- fwrite($file, "-- ---------------------------------------------------------\n");
- fwrite($file, "-- Database Name: $db\n");
- fwrite($file, "-- ---------------------------------------------------------\n\n");
- fwrite($file, "/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;\n");
- fwrite($file, "/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;\n");
- fwrite($file, "/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;\n");
- fwrite($file, "/*!40101 SET NAMES '".mysql_client_encoding()."' */;\n");
- fwrite($file, "/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;\n");
- fwrite($file, "/*!40103 SET TIME_ZONE='".mysql_result(mysql_query("SELECT @@time_zone"),0)."' */;\n");
- fwrite($file, "/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;\n");
- fwrite($file, "/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;\n");
- fwrite($file, "/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;\n");
- fwrite($file, "/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;\n\n");
- foreach($tabelstobackup as $table) {
- echo sprintf('Dump database table "%s"',$table)."<br/>";
- need_free_memory(($status[$table]['Data_length']+$status[$table]['Index_length'])*3);
- _db_dump_table($table,$status[$table],$file);
- }
- fwrite($file, "\n");
- fwrite($file, "/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;\n");
- fwrite($file, "/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;\n");
- fwrite($file, "/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;\n");
- fwrite($file, "/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;\n");
- fwrite($file, "/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;\n");
- fwrite($file, "/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;\n");
- fwrite($file, "/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;\n");
- fwrite($file, "/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;\n");
- fclose($file);
- echo 'Database dump done!'."<br/>";
- } else {
- echo 'Can not create database dump!'."<br/>";
- }
- } else {
- echo 'No tables to dump'."<br/>";
- }
- }
- function _db_dump_table($table,$status,$file) {
- fwrite($file, "\n");
- fwrite($file, "--\n");
- fwrite($file, "-- Table structure for table $table\n");
- fwrite($file, "--\n\n");
- fwrite($file, "DROP TABLE IF EXISTS `" . $table . "`;\n");
- fwrite($file, "/*!40101 SET @saved_cs_client = @@character_set_client */;\n");
- fwrite($file, "/*!40101 SET character_set_client = '".mysql_client_encoding()."' */;\n");
- $result=mysql_query("SHOW CREATE TABLE `".$table."`");
- if (!$result) {
- echo sprintf('Database error %1$s for query %2$s', mysql_error(), "SHOW CREATE TABLE `".$table."`")."<br/>";
- return false;
- }
- $tablestruc=mysql_fetch_assoc($result);
- fwrite($file, $tablestruc['Create Table'].";\n");
- fwrite($file, "/*!40101 SET character_set_client = @saved_cs_client */;\n");
- $result=mysql_query("SELECT * FROM `".$table."`");
- if (!$result) {
- echo sprintf('Database error %1$s for query %2$s', mysql_error(), "SELECT * FROM `".$table."`")."<br/>";
- return false;
- }
- fwrite($file, "--\n");
- fwrite($file, "-- Dumping data for table $table\n");
- fwrite($file, "--\n\n");
- if ($status['Engine']=='MyISAM')
- fwrite($file, "/*!40000 ALTER TABLE `".$table."` DISABLE KEYS */;\n");
- while ($data = mysql_fetch_assoc($result)) {
- $keys = array();
- $values = array();
- foreach($data as $key => $value) {
- if($value === NULL)
- $value = "NULL";
- elseif($value === "" or $value === false)
- $value = "''";
- elseif(!is_numeric($value))
- $value = "'".mysql_real_escape_string($value)."'";
- $values[] = $value;
- }
- fwrite($file, "INSERT INTO `".$table."` VALUES ( ".implode(", ",$values)." );\n");
- }
- if ($status['Engine']=='MyISAM')
- fwrite($file, "/*!40000 ALTER TABLE ".$table." ENABLE KEYS */;\n");
- }
- function need_free_memory($memneed) {
- if (!function_exists('memory_get_usage'))
- return;
- $needmemory=@memory_get_usage(true)+inbytes($memneed);
- if ($needmemory>inbytes(ini_get('memory_limit'))) {
- $newmemory=round($needmemory/1024/1024)+1 .'M';
- if ($needmemory>=1073741824)
- $newmemory=round($needmemory/1024/1024/1024) .'G';
- if ($oldmem=@ini_set('memory_limit', $newmemory))
- echo sprintf(__('Memory increased from %1$s to %2$s','backwpup'),$oldmem,@ini_get('memory_limit'))."<br/>";
- else
- echo sprintf(__('Can not increase memory limit is %1$s','backwpup'),@ini_get('memory_limit'))."<br/>";
- }
- }
- function inbytes($value) {
- $multi=strtoupper(substr(trim($value),-1));
- $bytes=abs(intval(trim($value)));
- if ($multi=='G')
- $bytes=$bytes*1024*1024*1024;
- if ($multi=='M')
- $bytes=$bytes*1024*1024;
- if ($multi=='K')
- $bytes=$bytes*1024;
- return $bytes;
- }
- ?>
(2)使用方法:
- db_dump('数据库服务器', '数据库用户名', '数据库密码', '数据库名');
热门文章推荐
- [php]优酷真实视频地址解析算法
- [Dz]discuz手机版支持视频播放的方法
- [PHP]php加密js解密的方法实例
- [php]用PHP打印出前一天的时间格式
- [PHP]mpeg,mp3,avi的ffmpeg的php转换类
- [php]php中3DES加密一个非常有用的3des加密
- [PHP]php.ini修改上传文件的大小限制处理方法
- [php]用过的最好用的php分页类源代码
请稍候...