2010-11-19 91 views
0

我嘗試了很多腳本來備份我的mySQL數據庫,但它們全部失敗。
phpMyAdmin是唯一一個可以像我應該那樣轉義我的字符串的程序。
這裏有什麼問題?在PHP數據庫備份腳本中編碼和轉義

在我的數據庫中的一些字符串中,我有像「é」等國際字符。 phpMyAdmin轉儲也顯示我也像「\ r \ n」,似乎打破腳本的東西。

這是一個編碼問題?我的數據庫中是否應該沒有「é」?
所有這些編碼,轉義是高於我的頭,我一直在努力與此。 我只想讓我的數據庫中的所有人都可讀,並且可以在瀏覽器中解析人類可讀的內容。爲什麼這很難?
我嘗試將所有內容設置爲UTF-8,但是當我使用json_encode()發送內容時,我在數據庫中包含了所有這些內容。

我發現了一個文檔片斷是去鏈接是:

$tableName = 'albums'; 
$backupFile = 'albums.sql'; 
$query  = "SELECT * INTO OUTFILE '$backupFile' FROM '$tableName'"; 
$result  = mysql_query($query); 
if (!$sql_res) { 
    echo "error"; 
} 

瀏覽器輸出「錯誤」

+0

您使用哪個PHP模塊? PDO,MySQL或mysqli? – stillstanding 2010-11-19 16:43:27

+0

呃,mysql。甚至不知道別人是什麼。 – FFish 2010-11-19 17:07:33

+1

SQL代碼中有一個錯誤,它應該是:SELECT * FROM'$ tableName'INTO OUTFILE'$ backupFile';並且你的錯誤檢查看一個不存在的變量,所以它總是假的 – Patrick 2010-11-19 17:31:53

回答

0

,如果您有命令行訪問和安裝mysqldump的(我認爲的MySQL的大多數安裝的話)然後只需運行

mysqldump [database-name] -u[username] =p'[password]' > db_backup.sql 

reference

+0

我想用PHP寫備份,而不是用命令行 – FFish 2010-11-19 16:49:06

+0

然後exec(「mysqldump [database-name] -u [username ] = p'[password]'> db_backup.sql「); – 2010-11-19 16:54:56

+0

也嘗試過,只是一個空白頁.. – FFish 2010-11-19 16:57:41

0

嘗試這個:

$tableName = 'albums'; 
$backupFile = 'albums.sql'; 
$query  = "SELECT * FROM {$tableName} INTO OUTFILE '{$backupFile}'"; 
$result  = mysql_query($query); 
if (!$result) { 
    echo "error"; 
} 

我想你確信你的mysql連接是正確組建的,並且db被選中了。