PHP技巧:用PHP導(dǎo)出MySQL數(shù)據(jù)庫(kù)內(nèi)容為.sql文件_PHP教程
推薦:PHP生成靜態(tài)頁(yè)面完整教程我們先回顧一些基本的概念。 一、PHP腳本與動(dòng)態(tài)頁(yè)面。 PHP腳本是一種服務(wù)器端腳本程序,可通過嵌入等方法與HTML文件混合,也可以類,函數(shù)封裝等形式,以模板的方式對(duì)用戶請(qǐng)求進(jìn)行處理。無(wú)論以何種方式,它的基本原理是這樣的。由客戶端提出請(qǐng)求,請(qǐng)求某一頁(yè)
通常我們都用 phpMyAdmin 來(lái)導(dǎo)出,不過如果你的數(shù)據(jù)庫(kù)如果存在下列問題,那么 phpMyAdmin 也無(wú)能為力。
- 數(shù)據(jù)庫(kù)的字符集與應(yīng)用程序的字符集不一致;
- 應(yīng)用程序用錯(cuò)誤的編碼將數(shù)據(jù)保存到了數(shù)據(jù)庫(kù)中;
- 用 phpMyAdmin 和 mysqldump 導(dǎo)出的數(shù)據(jù)總是亂碼。
總之你用 phpMyAdmin 和 mysqldump 導(dǎo)出的數(shù)據(jù)有亂碼時(shí),就試試看這個(gè)腳本吧。
使用很簡(jiǎn)單:
php export_db.php 數(shù)據(jù)庫(kù)名 [-h 主機(jī)名] [-c 字符集] [-f 輸出文件名] [-u 用戶名] [-p]
數(shù)據(jù)庫(kù)名是必須提供的,其他參數(shù)如果沒有提供則使用下面的默認(rèn)值:
默認(rèn)主機(jī)名 : localhost
默認(rèn)字符集 : utf8
默認(rèn)用戶名 : root
默認(rèn)密碼 : (無(wú))
默認(rèn)輸出文件 : 數(shù)據(jù)庫(kù)名.sql
這個(gè)腳本的導(dǎo)出結(jié)果就是一個(gè) .sql 文件,只有 insert 語(yǔ)句。
所以數(shù)據(jù)結(jié)構(gòu)需要單獨(dú)導(dǎo)出,不過這個(gè)就不存在字符集問題了。
源代碼:
- 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']}'");
- // 設(shè)置要導(dǎo)出的表
- 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
來(lái)源:網(wǎng)絡(luò)
分享:PHP安全編程之加密功能數(shù)據(jù)加密在我們生活中的地位已經(jīng)越來(lái)越重要了,尤其是考慮到在網(wǎng)絡(luò)上發(fā)生的大量交易和傳輸?shù)拇罅繑?shù)據(jù)。如果對(duì)于采用安全措施有興趣的話,也一定會(huì)有興趣了解PHP提供的一系列安全功能。在本篇文章中,我們將介紹這些功能,提供一些基本的用法,以便你能夠?yàn)樽?/p>
- PHPNOW安裝Memcached擴(kuò)展方法詳解
- php記錄頁(yè)面代碼執(zhí)行時(shí)間
- PHP中獎(jiǎng)概率的抽獎(jiǎng)算法程序代碼
- apache設(shè)置靜態(tài)文件緩存方法介紹
- php對(duì)圖像的各種處理函數(shù)代碼小結(jié)
- PHP 關(guān)于訪問控制的和運(yùn)算符優(yōu)先級(jí)介紹
- 關(guān)于PHP語(yǔ)言構(gòu)造器介紹
- php/js獲取客戶端mac地址的實(shí)現(xiàn)代碼
- php5.5新數(shù)組函數(shù)array_column使用
- PHP preg_match的匹配多國(guó)語(yǔ)言的技巧
- php 中序列化和json使用介紹
- php采集文章中的圖片獲取替換到本地
PHP教程Rss訂閱編程教程搜索
PHP教程推薦
- PHP技術(shù):txtSQL安裝手冊(cè)中文版
- 關(guān)于PHP位運(yùn)算的簡(jiǎn)單權(quán)限設(shè)計(jì)
- PHP將整個(gè)網(wǎng)站生成HTML靜態(tài)
- 基于php-fpm 參數(shù)的深入理解
- 基于在生產(chǎn)環(huán)境中使用php性能測(cè)試工具xhprof的詳解
- php實(shí)現(xiàn)頁(yè)面GZIP壓縮輸出
- 給wordpress 增加干擾碼防采集
- 關(guān)于PHP操作文件的一些FAQ總結(jié)
- 基于PHP CURL獲取郵箱地址的詳解
- PHP utf-8編碼問題,utf8編碼,數(shù)據(jù)庫(kù)亂碼,頁(yè)面顯示輸出亂碼
- 相關(guān)鏈接:
復(fù)制本頁(yè)鏈接| 搜索PHP技巧:用PHP導(dǎo)出MySQL數(shù)據(jù)庫(kù)內(nèi)容為.sql文件
- 教程說(shuō)明:
PHP教程-PHP技巧:用PHP導(dǎo)出MySQL數(shù)據(jù)庫(kù)內(nèi)容為.sql文件。