PHP如何导出数据库(以PHP导出MySQL数据库为例)
文 / @WordPress主题
很多朋友在开发定时备份网站数据等相关功能的时候,都会需要导出数据库等相关功能。下面UTHEME就为大家提供几种简单的备选方案,方便大家二次开发。
PHP备份/导出MySQL数据库脚本方案1
function utheme_backup_tables( $host, $user, $pass, $name, $tables = '*') { if( ! $link = mysql_connect( $host, $user, $pass ) ) return; if( ! mysql_select_db( $name, $link ) ) return; mysql_query("set names 'utf8'"); if( $tables == '*' ) { $tables = array(); $result = mysql_query( 'SHOW TABLES' ); while( $row = mysql_fetch_row( $result ) ) $tables[] = $row[0]; } else { $tables = is_array( $tables ) ? $tables : explode( ',', $tables ); } $date = date('Y 年 m 月 d 日 H:i:s', time() ); $mysqlinfo = mysql_query( 'SELECT VERSION()'); $mysqlinfo = mysql_fetch_row( $mysqlinfo ); $mysqlinfo = $mysqlinfo[0]; $phpinfo = PHP_VERSION; $return = "--\n"; $return .= "-- 背字根数据库备份脚本\n"; $return .= "-- 主机:$host\n"; $return .= "-- 生成日期:$date\n"; $return .= "-- 数据库版本:$mysqlinfo\n"; $return .= "-- PHP版本:$phpinfo\n"; $return .= "--\n"; $return .= "-- 数据库: `$name`\n"; $return .= "--\n\n"; $return .= "-- --------------------------------------------------------\n\n"; foreach( $tables as $table ) { $result = mysql_query( 'SELECT * FROM ' . $table ); $num_fields = mysql_num_fields( $result ); $return .= "--\n"; $return .= "-- 表的结构 `$table`\n"; $return .= "--"; $row2 = mysql_fetch_row( mysql_query( 'SHOW CREATE TABLE ' . $table ) ); $return .= "\n\n" . $row2[1] . ";\n\n"; $return .= "--\n"; $return .= "-- 转存表中的数据 `$table`\n"; $return .= "--\n\n"; while( $row = mysql_fetch_row( $result ) ) { $return .= "INSERT INTO `$table` VALUES ("; for( $i=0; $i<$num_fields; $i++ ) { $row[$i] = mysql_real_escape_string( $row[$i] ); if ( isset( $row[$i] ) ) { if( is_numeric($row[$i]) ) { $return .= $row[$i]; } else { $return .= "'$row[$i]'"; } } else { $return .= '""'; } if ( $i < ($num_fields-1) ) { $return .= ', '; } } $return .= ");\n"; } $return .= "\n\n"; } mysql_close($link); return $return; }
网上的脚本大多数没有对内容进行转义,一些脚本使用addslashes函数来转义,这样内容中的换行会使导出的内容看起来很乱,这里我使用mysql_real_escape_string函数来转义,导出的内容和使用phpMyAdmin导出的一致。
将导出的数据写入文件并打包:
$host = 'xxx.xxx.xxx.com:3306'; $user = 'tiezhushuo'; $pass = '123456'; $name = 'utheme'; $filename = __DIR__ . '/' . $name . '_' . time() . '.sql'; $mysql = bzg_backup_tables( $host, $user, $pass, $name ); if( $mysql ) { $fp = fopen( $filename, 'w' ); fputs( $fp, $mysql ); fclose( $fp ); } if( file_exists( $filename ) ) { $zip = new ZipArchive; if ( $zip->open( $filename . '.zip', ZIPARCHIVE::CREATE ) === TRUE ) { $zip->addFile( $filename, basename( $filename ) ); $zip->close(); unlink( $filename ); $filename = $filename . '.zip'; } }
PHP备份/导出MySQL数据库脚本方案2
// 连接到MySQL数据库
$host = 'localhost';
$user = 'username';
$password = 'password';
$dbname = 'database_name';
$conn = mysqli_connect($host, $user, $password, $dbname);
// 设置查询
$query = 'SELECT * FROM table_name';
// 执行查询
$result = mysqli_query($conn, $query);
// 如果查询成功
if ($result) {
// 创建CSV文件
$csv_file = fopen('export.csv', 'w');
// 循环读取查询结果
while ($row = mysqli_fetch_assoc($result)) {
// 将每一行的数据写入CSV文件
fputcsv($csv_file, $row);
}
// 关闭CSV文件
fclose($csv_file);
}
// 关闭数据库连接
mysqli_close($conn);
在这个例子中,我们使用 mysqli_connect()
函数来连接到MySQL数据库,然后使用 mysqli_query()
函数来执行查询,并使用 mysqli_fetch_assoc()
函数来读取查询结果。
接着,我们使用 fopen()
函数来创建一个CSV文件,然后使用 fputcsv()
函数来将查询结果写入文件,最后使用 fclose()
函数来关闭文件。
需要注意的是,这只是一个简单的例子,并不能作为完整的脚本使用。更复杂的脚本可能会涉及到其他功能,比如处理文件名、分页查询

相关文章
-
搭建一个WordPress网站需要多少成本 2023-11-06 00:09:51
-
Symlink介绍(附:如何使用Symlink进行WordPress开发) 2023-11-05 23:38:32
-
让WordPress实现数据库同步的插件:HyperDB 2023-10-24 23:40:49
-
allegro电商平台值得做吗(附:2023年Allegro注册流程指南) 2023-10-08 21:53:39
-
印度跨境电商平台有哪些(附:印度跨境电商做什么产品好) 2023-10-08 21:34:23
-
跨境电商必看的几大海外二手电商平台 2023-10-08 18:04:42
-
WordPress同城互联网产品解决方案:UBASE 2023-10-03 16:40:39
-
WordPress网站的安全插件:wordfence 2023-09-14 09:25:18
-
WordPress 6.3 支持在手动更新插件和主题失败后回滚旧版本 2023-08-28 16:58:45
-
WordPress 6.3版本(2023年8月)性能提升了哪些? 2023-08-28 16:56:02