php+数据库自动备份 php自带数据库

如何用PHP来实现 备份 mysql 数据库的 功能 ? 就是鼠标单击 让此项目的数据库自动保存到相应的文件夹?

我想到的有三种思路吧

创新互联建站-专业网站定制、快速模板网站建设、高性价比儋州网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式儋州网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖儋州地区。费用合理售后完善,10余年实体公司更值得信赖。

1.如果服务器允许mysqldump 并且没有禁止PHP的shell_exec()这个函数的话

直接在PHP里面执行mysqldump就可以了。

2.通过mysql_query('show tables')的返回值遍历每个表,循环对每个表使用查询语句

select * into outfile '路径/文件名' from 表名

缺点是这样得到的是纯数据,恢复数据的时候你需要额外再写脚本

3.同样通过show tables返回表名,遍历每个表,通过select 语句查询,然后逐条结果处理,比如手工添加drop table 和create table 以及insert into等等,然后再写入文件。这样得到的备份数据是比较接近mysqldump的结果的,各种工具都可以用来恢复数据。缺点是如果数据库太大的话,效率不好说

总之我不推荐用PHP来实现mysql数据的备份,如果可能的话还是用mysqldump吧

关于PHP+Mysql数据库自动备份的问题

先说代码,我看了一下,代码没什么问题,至于你说的不备份,原因可能如下:

查询无结果,测试办法是在最外层的那个while语句结束后输出查询语句,即:

while ($t = mysql_fetch_array($q1))

{

//里面的代码

}

echo $mysql;//在这里输出查询结果,如果结果正常,则说明查询有结果

$filename = "autobackup.sql"; //存放路径,默认存放到项目最外层

然后就是另一个问题了,目标文件不可写,你可以参考下面这样的代码

$filename = "autobackup.sql"; //存放路径,默认存放到项目最外层

if(!file_exists($filename) || is_writable($filename))//如果文件不存在或可写

{

$fp = fopen($filename, 'w');//打开或创建可写文件

$mysql=str_replace("','','');","',null,null);",$mysql);

fputs($fp, $mysql);//写入

fclose($fp);

}

else

{

echo "文件 $filename 不存在或不可写";

}

如果尝试发现仍有问题,请再追问

如何使用PHP自动备份数据库

使用mysqldump函数

mysqldump -u username -p dbname table1 table2 ...   BackupName.sql

dbname参数表示数据库的名称

table1和table2参数表示需要备份的表的名称,为空则整个数据库备份;

BackupName.sql参数表设计备份文件的名称,文件名前面可以加上一个绝对路径。通常将数据库被分成一个后缀名为sql的文件。

备份数据库的主要过程:

切换到对应的数据库;

使用show create table  tableName,获得表结构,写到文件中;

然后查询所有的表数据,循环生成相对应sql语句,写到文件中;

试运行生成的sql文件。


名称栏目:php+数据库自动备份 php自带数据库
URL分享:http://scyanting.com/article/hepdog.html