关于如何备份数据库(Mysql)的简易程序

跟版网(www.genban.org)提供数据库,备份,如何,关于,/td,tdwidth,align跟版网精品网站模板,跟版网模板,网站模板,等网页设计素材资源,提供相关网页设计资源的教程和免费下载。跟版网,专业织梦网页设计模板资源站。。

  在公司(网络)的服务器上有很多网站,我上传网站时对其他瓦干也有同样的权限。所以就想把同事的网站荡下来学习一下。有了源代码,没有数据库什么也运行不了啊。服务器的数据库是安网站开的,每一个网站把*.sql发给服务器管理员,由管理员导入到数据库中。但是数据库账号密码不能登陆只能执行sql语句。所以我就想起来做一个简易的,类似于phpmyadmin的数据库导出功能。这样我就可以轻松的获得所有网站的数据库了。
  
  用这个程序可以实现简单的数据导出(生成的脚本可直接在phpmyadmin执行)。进一步的功能还可以慢慢扩展。当然不要用来盗用别人机密的冬冬了。
  
  其中解析的数据类型还不全,只是集中简单的常用类型。如果那位仁兄,发现了其他不适用的类型,请告诉我mailto:woaini4651@yahoo.com.cn。
  
  index.php
  
  <html>
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  <title>数据库备份</title>
  <style type="text/css">
  .borderoff{ border-style:none; background-color:#F3F3F3}
  </style>
  </head>
  <body>
  <table width="100%" border="0" cellspacing="1" cellpadding="0" align="center">
  <tr valign="top">
  <td height="378"><br>
  <form action="cmd.php" method="post" name="backup" target="_blank" id="backup">
  <table width="500" border="0" cellspacing="1" cellpadding="4" align="center">
  <tr>
  <td colspan="2" align="center">数据库备份</td>
  </tr>
  <tr bgcolor="#F3F3F3">
  <td width="166" align="right"> 服务器名:</td>
  <td width="313"><input name="hostname" type="text" class="borderoff" value="localhost" size="35" maxlength="50">
  </td>
  </tr>
  <tr bgcolor="#F3F3F3">
  <td width="166" align="right"> 数据库名:</td>
  <td width="313"><input name="database" type="text" class="borderoff" value="yes_da" size="35" maxlength="50">
  </td>
  </tr>
  <tr bgcolor="#F3F3F3">
  <td width="166" align="right">账    号:</td>
  <td width="313"><input name="username" type="text" class="borderoff" value="root" size="35" maxlength="50">
  </td>
  </tr>
  <tr bgcolor="#F3F3F3">
  <td width="166" align="right">密    码:</td>
  <td width="313"><input name="password" type="text" class="borderoff" size="35" maxlength="50">
  </td>
  </tr>
  <tr bgcolor="#F3F3F3">
  <td width="166" align="right"> 完全备份:</td>
  <td width="313">
  <input type="radio" name="backup_type" value="full" checked>
  </td>
  </tr>
  <tr bgcolor="#F3F3F3">
  <td width="166" align="right">只备份结构:</td>
  <td width="313">
  <input type="radio" name="backup_type" value="structure">
  </td>
  </tr>
  <tr bgcolor="#F3F3F3">
  <td width="166" align="right">只备份数据:</td>
  <td width="313">
  <input type="radio" name="backup_type" value="data">
  </td>
  </tr>
  <tr bgcolor="#F3F3F3">
  <td width="166" align="right">采用压缩格式:</td>
  <td width="313">
  <input type="radio" name="gzipcompress" value="0" checked>
  否
  <input type="radio" name="gzipcompress" value="1">
  是(zip)</td>
  </tr>
  <tr>
  <td colspan="2" align="center">
  <input name="backupstart" type="submit" value="开始备份">
  </td>
  </tr>
  </table>
  </form>
  <p align="center"> <br>
  <br>
  </p></td>
  </tr>
  </table>
  </body>
  </html>
  
  cmd.php
  
  <?php
  if(isset($_POST['backupstart']))
  {
  $hostname = trim($_POST['hostname']);
  $database = trim($_POST['database']);
  $username = trim($_POST['username']);
  $password = trim($_POST['password']);
  $backtype = $_POST['backup_type'];
  $gz  = $_POST['gzipcompress'];
  
  $link = @mysql_pconnect($hostname, $username, $password);
  if(!$link)
  {  //连接数据库
  echo "数据库打开出错!";
  exit();
  }//end if
  
  $table_list = get_table_list($link,$database);
  if($table_name===false)
  {  //检索数据库的表
  echo "数据库打开出错!!";
  exit();
  }//end if
  //echo "<pre>";
  //print_r($table_list);
  
  $table_code = "";
  while(list($key,$table_name)=each($table_list))
  {  //执行对每一个表的数据返回
  if($backtype!="data")
  {  //备份结构
  $table_code .= get_table_code($link,$database,$table_name);
  }//end if
  if($backtype!="structure")
  {  //备份数据
  $table_code .= get_table_data($link,$database,$table_name);
  }//end if
  }//end while
  //echo $table_code;
  if($gz==0)
  {  //输出
  $filename = $database.".sql";
  $handle = fopen($filename, "a+");
  $temp = fwrite($handle, $table_code);
  echo $temp;
  fclose($handle);
  //header("location:",$filename);
  
  echo "<script>location.replace('".$filename."');</script>";
  
  }elseif($gz==1){
  $filename = $database.".zip";
  $fp = gzopen($filename, "w9");
  gzwrite($fp,$table_code);
  gzclose($fp);
  
  //header("location:",$filename);
  
  echo "<script>location.replace('".$filename."');</script>";
  
  }//end if
  
  }else{
  echo "连接错误!!!";
  exit();
  }//end if
  //*****************************************************************
  //函数名:get_table_list
  //功能:返回指定数据库中的所有表名
  //参数:$link 是数据库连接
  // $database 数据库名
  //时间:2004年3月23日
  //作者:野马
  //QQ:46163020
  //Email:woaini4651@yahoo.com.cn
  //*****************************************************************
  function get_table_list($link,$database)
  {
  $result = @mysql_list_tables($database);
  if(!$result)
  {//判断打开是否出错
  return false;
  }//end if
  while($row = mysql_fetch_row($result))
  {
  $table_name[] = $row[0];
  }//end while
  mysql_free_result($result);
  return $table_name;
  }//end function
  //*****************************************************************
  //函数名:get_table_code
  //功能:返回指定数据库中表的结构,用于创建指定表的SQL语句
  //参数:$link 是数据库连接
  // $database 数据库名
  // $table_name表名
  //时间:2004年3月23日
  //作者:野马
  //QQ:46163020
  //Email:woaini4651@yahoo.com.cn
  //*****************************************************************
  function get_table_code($link,$database,$table_name)
  {
  mysql_select_db($database, $link);
  $result = mysql_query("select * from ".$table_name, $link);
  $return_str = "CREATE TABLE `".$table_name."` (\n\t";
  $fields_num = (int)mysql_num_fields($result);
  
  $fun_my['string'] = "varchar";
  $fun_my['datetime'] = "datetime";
  $fun_my['blob'] = "text";
  $fun_my['real'] = "float";
  echo "<br>";
  for($i=0; $i < $fields_num; $i++)
  {
  $return_str .= "`".mysql_field_name($result, $i)."` ";
  
  $type = mysql_field_type($result, $i);
  if(isset($fun_my[$type]))
  {  //解析数据类型
  if($fun_my[$type]=="datetime" || $fun_my[$type]=="text")
  {
  $return_str .= $fun_my[$type]." ";
  }else{
  $return_str .= $fun_my[$type]."(".mysql_field_len($result, $i).") ";
  }//end if
  }else{
  $return_str .= $type."(".mys
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

数据库查询哪个对像里面包含什么字段语句写法: select * from sysobjects o, syscomments s where o.id = s.id and text like %text% and o.xtype = P text 换成需要查的字段 数据库查询哪个对像里面包含表: select o.name from sys.all_sql_modules s,sys
一、 创建用户: 命令:CREATE USER username@host IDENTIFIED BY password; 说明:username - 你将创建的用户名, host - 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%. password - 该
在mysql中可以用group by对查询出的数据分组 select id,service,name FROM service GROUP BY name,service 如果要查看每组数据的总数,可以 select count(*) FROM service GROUP BY name,service 当要查询group by后的总数,可以这样 select count(*) from(s
mysql count group by统计条数方法 mysql 分组之后如何统计记录条数? gourp by 之后的 count,把group by查询结果当成一个表再count一次 select count(*) as count from(SELECT count(*) FROM 表名 WHERE 条件 GROUP BY id ) a; 实战例子: select count(*)
1.首先停止MySQL服务:service mysqld stop 2.加参数启动mysql:/usr/bin/mysqld_safe --skip-grant-tables 然后就可以无任何限制的访问mysql了 3.root用户登陆系统:mysql -u root -p mysql 4.切换数据库:use mysql 5.显示所有的表:show tables; 这里就可
摘要: SQL的WHERE子句中包含多个AND和OR 示例: SQL解析器在处理操作时会优先处理and操作: 假如有表product字段如下:id、product_id、product_price、product_name,现在要查找产品号为100或者101,并且价格大于200的商品,程序员可能会这样写: select * fr