PHP备份数据到sql文件

不指定
2008-6-8 12:39 by:果面 PC应用 » 网络应用 本站原创 | |
<?php
$host="localhost";
$user="root";
$password="";
$dbname="database";

mysql_connect($host,$user,$password);
mysql_select_db($dbname);

$mysql= "set charset utf8;\r\n";#字符集
$q1=mysql_query(&quot;show tables");
while($t=mysql_fetch_array($q1)){
$table=$t[0];
$q2=mysql_query("show create table `$table`");
$sql=mysql_fetch_array($q2);
$mysql.=$sql['Create Table'].";\r\n\r\n";#DDL
$q3=mysql_query("select * from `$table`");
while($data=mysql_fetch_assoc($q3))
{
   $keys=array_keys($data);
   $keys=array_map('addslashes',$keys);
   $keys=join('`,`',$keys);
   $keys="`".$keys."`";
   $vals=array_values($data);
   $vals=array_map('addslashes',$vals);
   $vals=join("','",$vals);
   $vals="'".$vals."'";

   $mysql.="insert into `$table`($keys) values($vals);\r\n";
}
   $mysql.="\r\n";

}
$filename=date('Ymj').".sql"; //文件名为当天的日期
$fp = fopen($filename,'w');
fputs($fp,$mysql);
fclose($fp);
echo "<br><center>数据备份成功,生成备份文件".$filename."</center>";
?>


如果PHP调用显示正常,但是在phpmyadmin里面看是乱码,那么将
$mysql= "set charset utf8;\r\n";#字符集

里面的字符集修改成相应的再导出方可解决乱码,再导入回数据库就OK了。

出现这种情况是因为PHP里面查询前没有用到SQL的
set charset
,导致写入的时侯还是用默认的latin1字符集。
评论(0) 引用(0) 阅读(1869)