通过php备份mysql数据库时出错

时间:2010-02-20 08:15:37

标签: php mysql

这段代码出了什么问题?我目前正在使用链接调用下面的代码。还有什么需要这个工作吗?错误具体在于 这一行:

$backupdir = 'C:\wampbackup\x.sql'; 

这可能是一个可能的解决方案。我是一个初学者,所以请忍受我缺乏的知识。        

  $host= 'localhost';          
  $user= 'root';                
  $pass= ''; 
  $db=   'hospital; 

  $backupdir = 'C:\wampbackup\x.sql';    

  // Compute day, month, year, hour and min. 
  $today = getdate(); 
  $day = $today[mday]; 
  if ($day < 10) { 
      $day = "0$day"; 
  } 
  $month = $today[mon]; 
  if ($month < 10) { 
      $month = "0$month"; 
  } 
  $year = $today[year]; 
  $hour = $today[hours]; 
  $min = $today[minutes]; 
  $sec = "00"; 


  // Execute mysqldump command. 
  // It will produce a file named $db-$year$month$day-$hour$min.gz 
  // under $DOCUMENT_ROOT/$backupdir 
  system(sprintf( 
    'mysqldump --opt -h %s -u %s -p%s %s | gzip > %s/%s/%s-%s%s%s-%s%s.gz',                                                  
    $host, 
    $user, 
    $pass, 
    $db, 
    getenv('DOCUMENT_ROOT'), 
    $backupdir, 
    $db, 
    $year, 
    $month, 
    $day, 
    $hour, 
    $min 
  ));  
  echo '+DONE';  
?> 

3 个答案:

答案 0 :(得分:1)

更改此行:

$backupdir = 'C:\wampbackup\x.sql'; 

成:

$backupdir = 'C:\\wampbackup\\x.sql'; 

您需要使用另一个\反斜杠转义反斜杠。 :)

答案 1 :(得分:1)

您应该将错误消息与代码一起发布。但如果它不是复制粘贴错误,我发现了你的错误:它在第4行,关闭撇号缺失

$db=   'hospital;

答案 2 :(得分:0)

作为一个未成年人,你可以跳过整个

if ($day < 10) { 
    $day = "0$day"; 
}

稍后您在sprintf()调用中使用这些值,这可以自动执行此类格式化。只需使用%s更改匹配的%02d(使用d字符打印​​2 ecimal padded到0个空格。