看来,ThinkPHP不备份数据库。所以我自己写的。数据库
连接和事务
处理PDO。如果有必要,你可以联系我写一个MySQL或mysqli。
复制代码代码如下所示:
< PHP
类SqlAction延伸动作{
功能outsql(){
标题(内容
类型:
文本/ HTML;字符集= UTF-8);
使用C
方法读取数据库
配置。
为主机= C('db_host);
db_name美元= C('db_name);
用户名= C('db_user);
$
密码= C('db_pwd);
私有方法调用导出数据库
美元美元流出的输出= -> outputsql(为主机,在美元美元美元,用户,密码);
导出数据库
下载 标题(内容配置:依恋;
文件名= $ dbname。SQL);
echo outstream;
}
*
*数据库导出功能outputsql
*在PDO数据库数据导出
*为主机的主机名,如localhost
* $ dbname数据库名称
*用户
用户名 *密码密码
* $标志位0或10仅导出数据库结构1以导出数据库结构,数据
默认为1。
* /
私有
函数outputsql(为主机,在美元美元美元,用户,密码,$旗= 1){
{试
为PDO =新PDO(MySQL:主机=为主机;北京dbname美元美元美元,用户,密码); / /数据库连接
为PDO -> setAttribute(PDO::::attr_errmode,PDO errmode_exception); / /
设置调整参数,
错误异常
赶上(PDOException,e){ }
回声(a -> GetMessage); / /如果抛出的错误信息是连接异常
出口;
}
MySQL数据库是否存在美元=降` dbname美元`;加载SQL语句,如果有数据库,则
删除这个数据库。
creat_db美元=美元PDO ->查询(显示创建数据库dbname美元(->提取)); / /
显示视图的SQL语句
创建数据库
preg_match( /默认字符集(。*) * ,creat_db美元{创建数据库},$matches); / /默认字符集的字符集背后的规则
MySQL数据库创建`美元,在美元`默认字符集$匹配{ 1 }; / /数据库` test_db `违约声明如创建utf8字符集
找到 / *数据库字符序列作为整理utf8_general_ci * /
db_collate美元=美元PDO ->查询(选择从哪里default_collation_name information_schema.schemata schema_name =1dbname'limit美元)->取();
为MySQL。=整理。$ db_collate { 'default_collation_name'};。使用` dbname美元`;;
将美元美元= PDO ->
查询(展示表格); / /返回结果集的节目表,
检查所有的表名
foreach(将美元美元价值)的{ / /遍历集合,每个表对应的输出信息的名称
table_name美元=价值{ 0 }; / /得到表名
为MySQL。=如果表滴存在` table_name美元`;;每个表的下拉语句
table_query美元=美元PDO ->查询(显示创建表` table_name美元`); / /删除结果表信息集
create_sql美元=($ table_query ->提取); / /阵列采用取方法来删除相应的结果集
MySQL create_sql美元美元。= {'创建表}。; R;写入表信息
如果($)!= 0)如果标志不为0,则删除表以生成INSERT语句。
iteams_query美元=美元PDO ->查询(SELECT * FROM ` table_name美元`); / /删除表中的所有字段的结果集
= $值;对空字符串加载加载值
= $项目;准备加载空字符串表字段名
而($ item_query =美元iteams_query ->取(PDO::fetch_assoc)){ / /查询表的字段名称和数组的值相
关联的
item_names = array_keys美元(美元item_query); / /删除数组的键字段名
item_names美元= array_map(addslashes,item_names美元); / /特殊字符
翻译加
$项目=加入(`,`,item_names美元); / /联合字段名称,如:1 `,` 2、符号反引号
键盘1字段名称旁边的反转行情
item_values = array_values美元(美元item_query); / /删除数组的值字段的值
item_values美元= array_map(addslashes,item_values美元); / /特殊字符翻译加
value_string美元=加入(item_values美元'); / /组合值如value1,在单引号'value2值
($ value_string =$ value_string..); / /价值,在支架两侧
$值。。value_string美元; / /返回上一美元的价值
}
如果($)!=如果$值不是空的,即表内容
写入INSERT语句
insert_sql美元=插入` table_name美元`(` $项目`)值。RTrim(美元值);r;
语句被写入到$ mysql /
MySQL insert_sql美元美元。=;
}
}
}
返回mysql;
}
}
>
合作伙伴可以直接移植到自己的项目上,这是一个非常实用的功能吗。