开发者

error in backing up mysql database through php

What's wrong with this code?I'm currently calling the code below using a link. Is there anything else needed for this to work? The error is specifically in this line:

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

What might be a possible solution to this. I'm a beginner so please bear with my lack of knowledge.

  $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 com开发者_开发知识库mand. 
  // 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';  
?> 


Change this line:

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

into:

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

You need to escape back-slashes with another \ back-slash. :)


You should actually post your error message along with your code. But if it is not a copy-paste error, I found your bug: It's on line 4, the closing apostrophe is missing

$db=   'hospital;


As a minor aside, you could skip the entirety of

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

Later on you're using those values in a sprintf() call, which can do such formatting automatically. Simply change the matching %s with %02d (print a decimal padded to 2 spaces with the 0 character).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜