2010-11-27 104 views
0

我试图用PHP备份我的MySQL数据库,但是当我设置备份的路径时,我在运行脚本时收到另一个路径。PHP脚本来备份数据库

这是我的脚本:

$baseDir = 'backup/'; 
$db; 
$table; 
$server = $_SERVER['HTTP_HOST'] . substr($_SERVER['SCRIPT_NAME'],0,strrpos($_SERVER['SCRIPT_NAME'],'/')); 

这是备份功能中:

global $baseDir; 
global $db; 
global $server; 
$backupFile = $server . "/$baseDir$db/$tab.sql"; 
$query = mysql_query("SELECT * INTO OUTFILE '$backupFile' FROM $tab"); 
if(!$query) 
    echo "\t" .mysql_error() .PHP_EOL; 
else 
    echo " backuped." . PHP_EOL; 

我得到的路径是:c:\wamp\bin\mysql\mysql5.1.36\data\localhost\db\backup\contact_keeper\accounts.sql与erroCode:2(不能老是写/创建)。

+1

更好的解决方案是使用`mysqldump` - http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html – ajreal 2010-11-27 15:16:34

回答

2

SELECT ... INTO OUTFILE仅限于创建新文件。它不能覆盖现有文件作为安全措施。同样,确保在Windows中运行MySQL的帐户对该目录具有写入权限。它可能只有读/执行。