PHP技巧:用PHP导出MySQL数据库内容为.sql文件_PHP教程
教程Tag:暂无Tag,欢迎添加,赚取U币!
推荐:PHP生成静态页面完整教程我们先回顾一些基本的概念。 一、PHP脚本与动态页面。 PHP脚本是一种服务器端脚本程序,可通过嵌入等方法与HTML文件混合,也可以类,函数封装等形式,以模板的方式对用户请求进行处理。无论以何种方式,它的基本原理是这样的。由客户端提出请求,请求某一页
通常我们都用 phpMyAdmin 来导出,不过如果你的数据库如果存在下列问题,那么 phpMyAdmin 也无能为力。
- 数据库的字符集与应用程序的字符集不一致;
- 应用程序用错误的编码将数据保存到了数据库中;
- 用 phpMyAdmin 和 mysqldump 导出的数据总是乱码。
总之你用 phpMyAdmin 和 mysqldump 导出的数据有乱码时,就试试看这个脚本吧。
使用很简单:
php export_db.php 数据库名 [-h 主机名] [-c 字符集] [-f 输出文件名] [-u 用户名] [-p]
数据库名是必须提供的,其他参数如果没有提供则使用下面的默认值:
默认主机名 : localhost
默认字符集 : utf8
默认用户名 : root
默认密码 : (无)
默认输出文件 : 数据库名.sql
这个脚本的导出结果就是一个 .sql 文件,只有 insert 语句。
所以数据结构需要单独导出,不过这个就不存在字符集问题了。
源代码:
- if (!function_exists('mysql_connect')) {
- if (DIRECTORY_SEPARATOR == '/') {
- dl('php_mysql.so');
- } else {
- dl('php_mysql.dll');
- }
- }
- database = null;
- if (isset(argv[1])) {
- database = argv[1];
- } else {
- display_help();
- exit;
- }
- optional_args = array(
- '-h' => 'hostname',
- '-c' => 'charset',
- '-f' => 'filename',
- '-u' => 'username'
- );
- options = array(
- 'hostname' => 'localhost',
- 'charset' => 'utf8',
- 'filename' => '%s.sql',
- 'username' => 'root',
- );
- input_password = false;
- for (i = 2; i < argc; i++) {
- arg = argv[i];
- if (arg == '-p') {
- input_password = true;
- continue;
- }
- if (isset(optional_args[arg])) {
- value_name = optional_args[arg];
- if (isset(argv[i + 1])) {
- options[value_name] = argv[i + 1];
- i++;
- }
- }
- }
- if (input_password) {
- echo "password: ";
- fscanf(STDIN, '%s', password);
- options['password'] = password;
- echo "\n";
- } else {
- options['password'] = '';
- }
- if (database == null) {
- display_help();
- exit;
- }
- mysql_connect(options['hostname'], options['username'], options['password']);
- mysql_select_db(database);
- mysql_query("SET NAMES '{options['charset']}'");
- // 设置要导出的表
- tables = list_tables(database);
- filename = sprintf(options['filename'], database);
- fp = fopen(filename, 'w');
- foreach (tables as table) {
- dump_table(table, fp);
- }
- fclose(fp);
- mysql_close();
- echo "done.\n";
- exit;
- function list_tables(database)
- {
- rs = mysql_list_tables(database);
- tables = array();
- while (row = mysql_fetch_row(rs)) {
- tables[] = row[0];
- }
- mysql_free_result(rs);
- return tables;
- }
- function dump_table(table, fp = null)
- {
- need_close = false;
- if (is_null(fp)) {
- fp = fopen(table . '.sql', 'w');
- need_close = true;
- }
- fwrite(fp, "-- \n-- {table}\n-- \n");
- rs = mysql_query("SELECT * FROM `{table}`");
- while (row = mysql_fetch_row(rs)) {
- fwrite(fp, get_insert_sql(table, row));
- }
- mysql_free_result(rs);
- if (need_close) {
- fclose(fp);
- }
- fwrite(fp, "\n\n");
- }
- function get_insert_sql(table, row)
- {
- sql = "INSERT INTO `{table}` VALUES (";
- values = array();
- foreach (row as value) {
- values[] = "'" . mysql_real_escape_string(value) . "'";
- }
- sql .= implode(', ', values) . ");\n";
- return sql;
- }
- function display_help()
- {
- echo <<
- syntax:
- php export_db.php database [-h hostname] [-c charset] [-f filename] [-u username] [-p]
- defualt hostname : localhost
- default charset : utf8
- default username : root
- default password : (none)
- default filename : [database].sql
- EOT;
- }
- ?>
下载:export_db.rar
来源:网络
分享:PHP安全编程之加密功能数据加密在我们生活中的地位已经越来越重要了,尤其是考虑到在网络上发生的大量交易和传输的大量数据。如果对于采用安全措施有兴趣的话,也一定会有兴趣了解PHP提供的一系列安全功能。在本篇文章中,我们将介绍这些功能,提供一些基本的用法,以便你能够为自
相关PHP教程:
- 相关链接:
- 教程说明:
PHP教程-PHP技巧:用PHP导出MySQL数据库内容为.sql文件。