使用PHP备份MySQL表格

20 浏览
0 Comments

使用PHP备份MySQL表格

我想要备份带有特定子字符串的数据库表格(使用PHP)。以下是我尝试过但没有成功的代码:

error_reporting(1);
$dbname = 'wp_dev';
if (!mysql_connect('127.0.0.1', 'root', '')) {
    echo '连接错误';
    exit;
}
$sql = "SHOW TABLES FROM $dbname LIKE 'wp_%'";
$result = mysql_query($sql);
if (!$result) {
    echo "无法列出数据库表格\n";
    echo 'MySQL错误: ' . mysql_error();
    exit;
}
while ($row = mysql_fetch_row($result)) {
    echo "
表格: {$row[0]}\n

"; system( 'mysqldump $dbname $row[0] > verlag_$row[0].sql'); } mysql_free_result($result);

请注意,这段代码可能存在一些问题,因为它使用了已经过时的mysql函数。建议使用新的数据库扩展如mysqli或PDO来替代。

0
0 Comments

backup mysql tables with php的问题出现的原因是需要对MySQL数据库中的表进行备份,并且使用PHP语言来实现。以下是解决方法:

首先,创建一个名为backup_tables的函数,该函数接收主机名、用户名、密码、数据库名和表名作为参数。然后,函数中定义了一个变量$data,用于存储备份的SQL语句。接下来,使用include语句引入connexion.php文件,该文件中包含了与MySQL数据库的连接信息。然后,设置字符集为utf8。根据传入的表名参数,判断是否需要备份所有表。如果是,则获取所有表的名称;否则,将传入的表名参数转换为数组。然后,遍历所有表,获取表的创建语句并存储到$data变量中。接着,查询表中的所有数据,并将数据插入到$data变量中。最后,关闭与数据库的连接并返回$data变量。

然后,在调用backup_tables函数之前,定义了一个备份文件名$backup_file,并使用当前时间戳作为文件名的一部分。然后,设置主机名、用户名、密码、数据库名和表名等参数,并调用backup_tables函数进行备份。将备份结果保存到文件中,并关闭文件句柄。最后,输出一条消息表示备份成功。

其中,connexion.php文件中定义了与MySQL数据库的连接信息,包括主机名、用户名、密码和数据库名。

以上代码实现了使用PHP语言备份MySQL数据库中的表的功能。

0
0 Comments

问题的出现原因是需要备份MySQL表格的数据,但是没有找到合适的方法来实现。

解决方法是使用PHP编写函数来打开数据库并执行MySQL查询语句。可以通过以下代码来备份表格数据:

openDb($db,$user,$pw);
get("CREATE TABLE `TABLE1_backup` LIKE `TABLE1`");
get("INSERT INTO `TABLE1_backup` (SELECT * FROM `TABLE1`)");

以上代码会创建一个名为`TABLE1_backup`的新表格,其结构与原表`TABLE1`相同,并将原表的数据插入到新表格中。

需要注意的是,以上代码只是一个简单的示例。在实际使用中,可能还需要添加其他操作,比如删除已存在的备份表格等。通过检查`get`函数的返回值,可以判断备份是否成功。如果返回值为false,可以通过`MySQLi_ERROR`来获取错误信息进行调试。

0
0 Comments

备份MySQL表格是一个常见的需求,可以使用PHP编写脚本来实现。下面的代码是一个用于备份数据库或指定表格的函数。

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,$user,$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

使用方法如下:

// 创建备份文件
$backup_file = 'db-backup-'.time().'.sql';
// 获取备份数据
$mybackup = backup_tables("myhost","mydbuser","mydbpasswd","mydatabase","*");
// 保存到文件
$handle = fopen($backup_file,'w+');
fwrite($handle,$mybackup);
fclose($handle);

如果要备份特定的表格,可以将`$tables`参数的值设置为要备份的表格名称,多个表格之间用逗号分隔。

$mybackup = backup_tables("myhost","mydbuser","mydbpasswd","mydatabase","Table1,Table2,TableX");

在代码中使用了`DROP TABLE IF EXISTS`语句,这是为了在备份文件中包含完整的数据还原过程。备份文件首先执行`DROP TABLE`命令来删除已存在的表格,然后执行`CREATE TABLE`命令来创建表格结构,最后插入所有的行数据。这样可以确保备份文件在还原时能够正确地清除旧数据、创建新表格并导入所有行数据。

需要注意的是,代码中使用的`mysql_*`函数已被弃用,并且在PHP 7.0.0版本中已被移除。建议使用`mysqli`或`PDO_MySQL`扩展来替代。

0