加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

使用php备份mysql表

发布时间:2020-12-13 22:04:44 所属栏目:PHP教程 来源:网络整理
导读:如果表前缀与子字符串匹配,我想从db备份表(使用 PHP).我在尝试什么,不工作 error_reporting(1);$dbname = 'wp_dev';if (!mysql_connect('127.0.0.1','root','')) { echo 'Connection Error'; exit;}$sql = "SHOW TABLES FROM $dbname LIKE 'wp_%'";$result =
如果表前缀与子字符串匹配,我想从db备份表(使用 PHP).我在尝试什么,不工作

error_reporting(1);
$dbname = 'wp_dev';

if (!mysql_connect('127.0.0.1','root','')) {
    echo 'Connection Error';
    exit;
}

$sql = "SHOW TABLES FROM $dbname LIKE 'wp_%'";
$result = mysql_query($sql);

if (!$result) {
    echo "DB tables could not be listedn";
    echo 'MySQL Fehler: ' . mysql_error();
    exit;
}

while ($row = mysql_fetch_row($result)) {
    echo "<pre>Table: {$row[0]}n</pre>";
    system( 'mysqldump $dbname $row[0] > verlag_$row[0].sql');
}

mysql_free_result($result);

解决方法

这是一个从db或只有一些表创建bakup的函数

function &backup_tables($host,$user,$pass,$name,$tables = '*'){
  $data = "n/*---------------------------------------------------------------".
          "n  SQL DB BACKUP ".date("d.m.Y H:i")." ".
          "n  HOST: {$host}".
          "n  DATABASE: {$name}".
          "n  TABLES: {$tables}".
          "n  ---------------------------------------------------------------*/n";
  $link = mysql_connect($host,$pass);
  mysql_select_db($name,$link);
  mysql_query( "SET NAMES `utf8` COLLATE `utf8_general_ci`",$link ); // Unicode

  if($tables == '*'){ //get all of the tables
    $tables = array();
    $result = mysql_query("SHOW TABLES");
    while($row = mysql_fetch_row($result)){
      $tables[] = $row[0];
    }
  }else{
    $tables = is_array($tables) ? $tables : explode(',',$tables);
  }

  foreach($tables as $table){
    $data.= "n/*---------------------------------------------------------------".
            "n  TABLE: `{$table}`".
            "n  ---------------------------------------------------------------*/n";           
    $data.= "DROP TABLE IF EXISTS `{$table}`;n";
    $res = mysql_query("SHOW CREATE TABLE `{$table}`",$link);
    $row = mysql_fetch_row($res);
    $data.= $row[1].";n";

    $result = mysql_query("SELECT * FROM `{$table}`",$link);
    $num_rows = mysql_num_rows($result);    

    if($num_rows>0){
      $vals = Array(); $z=0;
      for($i=0; $i<$num_rows; $i++){
        $items = mysql_fetch_row($result);
        $vals[$z]="(";
        for($j=0; $j<count($items); $j++){
          if (isset($items[$j])) { $vals[$z].= "'".mysql_real_escape_string( $items[$j],$link )."'"; } else { $vals[$z].= "NULL"; }
          if ($j<(count($items)-1)){ $vals[$z].= ","; }
        }
        $vals[$z].= ")"; $z++;
      }
      $data.= "INSERT INTO `{$table}` VALUES ";      
      $data .= "  ".implode(";nINSERT INTO `{$table}` VALUES ",$vals).";n";
    }
  }
  mysql_close( $link );
  return $data;
}

如何使用:

// create backup
//////////////////////////////////////

$backup_file = 'db-backup-'.time().'.sql';

// get backup
$mybackup = backup_tables("myhost","mydbuser","mydbpasswd","mydatabase","*");

// save to file
$handle = fopen($backup_file,'w+');
fwrite($handle,$mybackup);
fclose($handle);

您可以修改该行:

$result = mysql_query(“SHOW TABLES”);

对于表pr?fix

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读