2011-11-08 37 views
0

採取我要帶我的數據庫日常備份,我用下面的代碼的MySQL備份(.sql文件)的單引號和雙引號如何逃避被使用mysqldump

$username =escapeshellcmd($dbuser); 
$password =escapeshellcmd($dbpwd); 
$hostname =escapeshellcmd($server); 
$database =escapeshellcmd($dbname); 

$backupFile='/mypath/dbBackup/'.date("Y-m-d-H-i-s").'.sql'; 
$command = "mysqldump -u$username -p$password -h$hostname $database > $backupFile"; 
system($command, $result); 

我把這個代碼php文件並通過cron作業調用該文件,我設置爲每日進行數據庫備份。這工作正常,但問題是我的表中的列包含有單引號和雙引號的內容。因爲這是創建備份文件時(.SQL文件),它包含了破INSERT這樣的查詢

INSERT INTO `mytable` VALUES (1,'don\'t read this article','test\'ssdf','',1,5,6,0),(2,'goal setting tips you\'d want to try','Category- ' .... 

那麼,有沒有辦法同時使用mysqldump來逃避.SQL備份文件,這些單引號和雙引號。

+0

該查詢不會破壞我的... –

+1

Au反向,反斜槓** unbreak **查詢。他們*是*轉義報價。 – deceze

+0

如果SQL語法讓你感到困惑,也可以使用'mysqldump --xml'。 – mario

回答

2

您不必在MySQL備份文件中轉義任何內容。

+0

感謝您的回覆,但是當我使用phpmyadmin進行手動備份時 - >導出包含雙單引號的備份意味着單引號存在的地方添加了額外的單引號。爲什麼添加。我很困惑。 – user392406

+0

有幾種引用方式。你可以用反斜槓或相同的引用引用單引號。爲什麼phpmyadmin更喜歡一種方法而不是另一種方法,我不知道。但無論如何,這並不重要 –