在PHP数据库备份脚本中编码和转义

问题描述:

我尝试了很多脚本来备份我的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

,如果您有命令行访问和安装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

尝试这个:

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

我想你确信你的mysql连接是正确组建的,并且db被选中了。