CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  PHP

求段php导出mysql备份数据的代码

楼主shuzai()2006-06-04 13:22:41 在 Web 开发 / PHP 提问

希望只运行程序,就导出sql格式的备份  
  类似   insert   into   tablename(x,y,z)values(1,2,3)   的那种sql语句格式的  
   
  用phpmyadmin步骤太多,看它的代码,没找到到底是如何方式的 问题点数:20、回复次数:2Top

1 楼iasky(iasky)回复于 2006-06-04 15:30:41 得分 20

function   sqldumptable($table,   $fp=0)   {  
                    global   $DB;  
   
                    $tabledump   =   "DROP   TABLE   IF   EXISTS   $table;\n";  
                    $tabledump   .=   "CREATE   TABLE   $table   (\n";  
   
                    $firstfield=1;  
   
                    $fields   =   $DB->query("SHOW   FIELDS   FROM   $table");  
                    while   ($field   =   $DB->fetch_array($fields))   {  
                                  if   (!$firstfield)   {  
                                          $tabledump   .=   ",\n";  
                                  }   else   {  
                                          $firstfield=0;  
                                  }  
                                  $tabledump   .=   "       $field[Field]   $field[Type]";  
                                  if   (!empty($field["Default"]))   {  
                                          $tabledump   .=   "   DEFAULT   '$field[Default]'";  
                                  }  
                                  if   ($field['Null']   !=   "YES")   {  
                                          $tabledump   .=   "   NOT   NULL";  
                                  }  
                                  if   ($field['Extra']   !=   "")   {  
                                          $tabledump   .=   "   $field[Extra]";  
                                  }  
                    }  
                    $DB->free_result($fields);  
   
                    $keys   =   $DB->query("SHOW   KEYS   FROM   $table");  
                    while   ($key   =   $DB->fetch_array($keys))   {  
                                  $kname=$key['Key_name'];  
                                  if   ($kname   !=   "PRIMARY"   and   $key['Non_unique']   ==   0)   {  
                                      $kname="UNIQUE|$kname";  
                                  }  
                                  if(!is_array($index[$kname]))   {  
                                      $index[$kname]   =   array();  
                                  }  
                                  $index[$kname][]   =   $key['Column_name'];  
                    }  
                    $DB->free_result($keys);  
   
                    while(list($kname,   $columns)   =   @each($index)){  
                                $tabledump   .=   ",\n";  
                                $colnames=implode($columns,",");  
   
                                if   ($kname   ==   "PRIMARY")   {  
                                      $tabledump   .=   "       PRIMARY   KEY   ($colnames)";  
                                }   else   {  
                                      if   (substr($kname,0,6)   ==   "UNIQUE")   {  
                                              $kname=substr($kname,7);  
                                      }  
                                      $tabledump   .=   "       KEY   $kname   ($colnames)";  
                                }  
                    }  
   
                    $tabledump   .=   "\n);\n\n";  
                    if   ($fp)   {  
                            fwrite($fp,$tabledump);  
                    }   else   {  
                            echo   $tabledump;  
                    }  
   
                    $rows   =   $DB->query("SELECT   *   FROM   $table");  
                    $numfields   =   mysql_num_fields($rows);  
                    while   ($row   =   $DB->fetch_array($rows))   {  
                                  $tabledump   =   "INSERT   INTO   $table   VALUES(";  
   
                                  $fieldcounter=-1;  
                                  $firstfield=1;  
                                  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;  
                                  }  
                    }  
                    $DB->free_result($rows);  
  }Top

2 楼love01px(JAVA CUP)回复于 2006-06-04 18:08:19 得分 0

http://www.leexuan.com/upload/mydb.rar  
   
  小巧的Mysql备份脚本   3个文件  
  1.   mydb.php   //DB类  
  2.   backup.php   //备份脚本  
  3.   restore.php   //还原脚本  
   
  (From:OK.绷)  
   
  只要配置一下  
  backup.php和restore.php  
  的第3~7行  
   
  Top

相关问题

关键词

得分解答快速导航

  • 帖主:shuzai
  • iasky

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo