PHP导出sql文件
发现自己之前写的php导出sql数据为Excel文件在导出一些数据的时候出现了精度的问题,比如导出身份证号的时候会把后面变成0000。暂时先把这个问题留下,有空去看看到底是什么问题。 写了一个导出sql的工具。稍微加了下界面,把功能也做多了点,简单来说,就是
发现自己之前写的php导出sql数据为Excel文件在导出一些数据的时候出现了精度的问题,比如导出身份证号的时候会把后面变成0000。暂时先把这个问题留下,有空去看看到底是什么问题。
写了一个导出sql的工具。稍微加了下界面,把功能也做多了点,简单来说,就是三个功能:
1.直接在浏览器上显示sql文件内容。
2.直接导出到服务器上,要求目录要可写。
3.直接下载到本地,脱库时感觉还不错。
好了直接贴上代码:
sqldump.php
<span>php </span><span>if</span> (<span>isset</span>(<span>$_REQUEST</span>['option'<span>])) { </span><span>define</span>('DOWNLOAD', <span>$_REQUEST</span>['option'<span>]); }</span><span>else</span><span>{ </span><span>define</span>('DOWNLOAD',0);<span>//</span><span>0代表直接显示,1代表下载,2代表导出在本地</span> <span> } </span><span>if</span> (DOWNLOAD != 1<span>) { </span><span>header</span>("Content-type:text/html;charset=utf-8"<span>); } </span><span>$cfg_dbhost</span> ='localhost'<span>; </span><span>$cfg_dbname</span> ='mysql'<span>; </span><span>$cfg_dbuser</span> ='root'<span>; </span><span>$cfg_dbpwd</span> =''<span>; </span><span>$cfg_db_language</span> ='utf8'<span>; </span><span>//</span><span>配置信息</span> <span>$cfg_dbhost</span> = <span>isset</span>(<span>$_REQUEST</span>['dbhost'])?<span>$_REQUEST</span>['dbhost']:<span>$cfg_dbhost</span><span>; </span><span>$cfg_dbname</span> = <span>isset</span>(<span>$_REQUEST</span>['dbname'])?<span>$_REQUEST</span>['dbname']:<span>$cfg_dbname</span><span>; </span><span>$cfg_dbuser</span> = <span>isset</span>(<span>$_REQUEST</span>['dbuser'])?<span>$_REQUEST</span>['dbuser']:<span>$cfg_dbuser</span><span>; </span><span>$cfg_dbpwd</span> = <span>isset</span>(<span>$_REQUEST</span>['dbpwd'])?<span>$_REQUEST</span>['dbpwd']:<span>$cfg_dbpwd</span><span>; </span><span>$cfg_db_language</span> = <span>isset</span>(<span>$_REQUEST</span>['dbc'])?<span>$_REQUEST</span>['dbc']:<span>$cfg_db_language</span><span>; </span><span>$to_file_name</span> =<span>isset</span>(<span>$_REQUEST</span>['dbtable'])?<span>$_REQUEST</span>['dbtable'].".sql":<span>$cfg_dbname</span>.".sql"<span>; </span><span>if</span> (DOWNLOAD==2<span>) { </span><span>$to_file_name</span> =<span>isset</span>(<span>$_REQUEST</span>['dbtable'])?<span>dirname</span>(<span>__FILE__</span>).DIRECTORY_SEPARATOR.<span>$_REQUEST</span>['dbtable'].".sql":<span>dirname</span>(<span>__FILE__</span>).DIRECTORY_SEPARATOR.<span>$cfg_dbname</span>.".sql"<span>; } </span><span>//</span><span> END 配置 //链接数据库</span> <span>$link</span> = @<span>mysql_connect</span>(<span>$cfg_dbhost</span>,<span>$cfg_dbuser</span>,<span>$cfg_dbpwd</span><span>); </span><span>$link</span>==<span>null</span>?<span>die</span>('mysql connect error'):''<span>; @</span><span>mysql_select_db</span>(<span>$cfg_dbname</span><span>); </span><span>//</span><span>选择编码</span> @<span>mysql_query</span>("set names ".<span>$cfg_db_language</span><span>); </span><span>//</span><span>数据库中有哪些表</span> <span>$tabList</span> = <span>isset</span>(<span>$_REQUEST</span>['dbtable'])?<span>array</span>("{<span>$_REQUEST</span>['dbtable']}"):list_tables(<span>$cfg_dbname</span><span>); </span><span>$tabList</span>==<span>null</span>?<span>die</span>('no tables found'):''<span>; </span><span>if</span> (DOWNLOAD==1<span>) { </span><span>Header</span>("Content-type: application/octet-stream"<span>); </span><span>Header</span>("Accept-Ranges: bytes"<span>); </span><span>Header</span>("Content-Disposition: attachment; filename=".<span>$to_file_name</span><span>); } </span><span>if</span> (DOWNLOAD==2<span>) { </span><span>echo</span> "正在导出...<hr>"<span>; } </span><span>$info</span> = "-- ----------------------------\r\n"<span>; </span><span>$info</span> .= "-- 备份日期:".<span>date</span>("Y-m-d H:i:s",<span>time</span>())."\r\n"<span>; </span><span>$info</span> .= "-- ----------------------------\r\n\r\n"<span>; </span><span>if</span> (DOWNLOAD==2<span>) { </span><span>file_put_contents</span>(<span>$to_file_name</span>,<span>$info</span>,<span>FILE_APPEND); }</span><span>else</span><span>{ </span><span>echo</span> <span>$info</span><span>; } </span><span>//</span><span>将每个表的表结构导出到文件</span> <span>foreach</span>(<span>$tabList</span> <span>as</span> <span>$val</span><span>){ </span><span>$sql</span> = "show create table ".<span>$val</span><span>; </span><span>$res</span> = @<span>mysql_query</span>(<span>$sql</span>,<span>$link</span><span>); </span><span>if</span> (<span>$res</span>==<span>null</span><span>) { </span><span>die</span>('table `'.<span>$val</span>.'` not EXISTS'<span>); } </span><span>$row</span> = @<span>mysql_fetch_array</span>(<span>$res</span><span>); </span><span>$info</span> = "-- ----------------------------\r\n"<span>; </span><span>$info</span> .= "-- Table structure for `".<span>$val</span>."`\r\n"<span>; </span><span>$info</span> .= "-- ----------------------------\r\n"<span>; </span><span>$info</span> .= "DROP TABLE IF EXISTS `".<span>$val</span>."`;\r\n"<span>; </span><span>$sqlStr</span> = <span>$info</span>.<span>$row</span>[1].";\r\n\r\n"<span>; </span><span>if</span> (DOWNLOAD==2<span>) { </span><span>//</span><span>追加到文件</span> <span>file_put_contents</span>(<span>$to_file_name</span>,<span>$sqlStr</span>,<span>FILE_APPEND); }</span><span>else</span><span>{ </span><span>echo</span> <span>$sqlStr</span><span>; } </span><span>//</span><span>释放资源</span> @<span>mysql_free_result</span>(<span>$res</span><span>); } </span><span>//</span><span>将每个表的数据导出到文件</span> <span>foreach</span>(<span>$tabList</span> <span>as</span> <span>$val</span><span>){ </span><span>if</span>(DOWNLOAD==2<span>){ </span><span>echo</span> "正在导出表`".<span>$val</span>."`...<br>"<span>; } </span><span>$sql</span> = "select * from ".<span>$val</span><span>; </span><span>$res</span> = @<span>mysql_query</span>(<span>$sql</span>,<span>$link</span><span>); </span><span>//</span><span>如果表中没有数据,则继续下一张表</span> <span>if</span>(@<span>mysql_num_rows</span>(<span>$res</span>)continue<span>; </span><span>// </span> <span>$info</span> = "-- ----------------------------\r\n"<span>; </span><span>$info</span> .= "-- Records for `".<span>$val</span>."`\r\n"<span>; </span><span>$info</span> .= "-- ----------------------------\r\n"<span>; </span><span>if</span> (DOWNLOAD==2<span>) { </span><span>file_put_contents</span>(<span>$to_file_name</span>,<span>$info</span>,<span>FILE_APPEND); }</span><span>else</span><span>{ </span><span>echo</span> <span>$info</span><span>; } </span><span>//</span><span>读取数据</span> <span>while</span>(<span>$row</span> = @<span>mysql_fetch_row</span>(<span>$res</span><span>)){ </span><span>$sqlStr</span> = "INSERT INTO `".<span>$val</span>."` VALUES ("<span>; </span><span>foreach</span>(<span>$row</span> <span>as</span> <span>$zd</span><span>){ </span><span>$sqlStr</span> .= "'".<span>$zd</span>."', "<span>; } </span><span>//</span><span>去掉最后一个逗号和空格</span> <span>$sqlStr</span> = <span>substr</span>(<span>$sqlStr</span>,0,<span>strlen</span>(<span>$sqlStr</span>)-2<span>); </span><span>$sqlStr</span> .= ");\r\n"<span>; </span><span>if</span> (DOWNLOAD==2<span>) { </span><span>file_put_contents</span>(<span>$to_file_name</span>,<span>$sqlStr</span>,<span>FILE_APPEND); }</span><span>else</span><span>{ </span><span>echo</span> <span>$sqlStr</span><span>; } } </span><span>//</span><span>释放资源</span> @<span>mysql_free_result</span>(<span>$res</span><span>); </span><span>if</span> (DOWNLOAD==2<span>) { </span><span>file_put_contents</span>(<span>$to_file_name</span>,"\r\n",<span>FILE_APPEND); }</span><span>else</span><span>{ </span><span>echo</span> "\r\n"<span>; } } </span><span>if</span>(DOWNLOAD==2<span>){ </span><span>echo</span> "<hr>导出成功。"<span>; } </span><span>//</span><span> echo "End!";</span> <span>function</span> list_tables(<span>$database</span><span>) { </span><span>$sql</span>='SHOW TABLES FROM '.<span>$database</span><span>; </span><span>$rs</span> = <span>mysql_query</span>(<span>$sql</span><span>); </span><span>$tables</span> = <span>array</span><span>(); </span><span>while</span> (<span>$row</span> = <span>mysql_fetch_row</span>(<span>$rs</span><span>)) { </span><span>$tables</span>[] = <span>$row</span>[0<span>]; } </span><span>mysql_free_result</span>(<span>$rs</span><span>); </span><span>return</span> <span>$tables</span><span>; } </span>?>
然后是界面的东西了,为的是不让自己去记这个烦人的参数。
sqldumpclient.html
<span><span>html</span><span>></span> <span><span>head</span><span>></span> <span><span>title</span><span>></span>sqldump客户端<span></span><span>title</span><span>></span> <span><span>meta </span><span>charset</span><span>='utf-8'</span><span>></span> <span><span>script </span><span>type</span><span>="text/javascript"</span><span>></span> <span>function</span><span> setaction () { $(</span><span>'</span><span>cform</span><span>'</span><span>).action</span><span>=</span><span>$(</span><span>'</span><span>act</span><span>'</span><span>).value; inputs</span><span>=</span><span>document.getElementsByTagName(</span><span>'</span><span>input</span><span>'</span><span>); </span><span>for</span><span>(</span><span>var</span><span> i </span><span>=</span><span>1</span><span>;i</span><span><span>inputs.length</span><span>-</span><span>4</span><span>;i</span><span>++</span><span>){ </span><span>if</span><span> (inputs[i].value</span><span>!=</span><span>''</span><span>) { inputs[i].name</span><span>=</span><span>inputs[i].id; } } } </span><span>function</span><span> $(id){ </span><span>return</span><span> document.getElementById(id); } </span><span></span><span>script</span><span>></span> <span></span><span>head</span><span>></span> <span><span>body</span><span>></span> <span><span>center</span><span>></span> <span><span>h1 </span><span>align</span><span>="center"</span><span>></span>PHP sql dump<span></span><span>h1</span><span>></span> <span><span>h3 </span><span>align</span><span>="right"</span><span>></span>Author:Medici.Yan@gmail.com<span></span><span>h3</span><span>></span> <span><span>form </span><span>method</span><span>="post"</span><span> id</span><span>='cform' </span><span>onsubmit</span><span>="setaction()"</span><span>></span> <span><span>fieldset</span><span>></span> <span><span>table</span><span>></span> <span><span>legend</span><span>></span>配置<span></span><span>legend</span><span>></span> <span><span>tr</span><span>></span> <span><span>td</span><span>><span>label </span><span>for</span><span>="act"</span><span>></span>脚本地址:<span></span><span>label</span><span>></span><span>td</span><span>></span> <span><span>td</span><span>><span>input </span><span>type</span><span>="text"</span><span> id</span><span>='act' </span><span>placeholder</span><span>="http://www.example.com/sqldump.php"</span><span>/></span><span>td</span><span>></span> <span><span>td </span><span>rowspan</span><span>="7"</span><span> width</span><span>="100"</span><span>></span>使用方法:把sqldump.php传到服务器上,然后在这里填写相关参数,也可以直接访问脚本<span></span><span>td</span><span>></span> <span></span><span>tr</span><span>></span> <span><span>tr</span><span>></span> <span><span>td</span><span>><span>label </span><span>for</span><span>="dbhost"</span><span>></span>数据库地址:<span></span><span>label</span><span>></span><span>td</span><span>></span> <span><span>td</span><span>><span>input </span><span>type</span><span>="text"</span><span> id</span><span>="dbhost"</span><span> placeholder</span><span>="默认:localhost"</span><span>/></span><span>td</span><span>></span> <span></span><span>tr</span><span>></span> <span><span>tr</span><span>></span> <span><span>td</span><span>><span>label </span><span>for</span><span>="dbname"</span><span>></span>数据库名:<span></span><span>label</span><span>></span><span>td</span><span>></span> <span><span>td</span><span>><span>input </span><span>type</span><span>="text"</span><span> id</span><span>="dbname"</span><span> placeholder</span><span>="默认:mysql"</span><span>/></span><span>td</span><span>></span> <span></span><span>tr</span><span>></span> <span><span>tr</span><span>></span> <span><span>td</span><span>><span>label </span><span>for</span><span>="dbuser"</span><span>></span>用户名:<span></span><span>label</span><span>></span><span>td</span><span>></span> <span><span>td</span><span>><span>input </span><span>type</span><span>="text"</span><span> id</span><span>="dbuser"</span><span> placeholder</span><span>="默认:root"</span><span>/></span><span>td</span><span>></span> <span></span><span>tr</span><span>></span> <span><span>tr</span><span>></span> <span><span>td</span><span>><span>label </span><span>for</span><span>="dbpwd"</span><span>></span>密码:<span></span><span>label</span><span>></span><span>td</span><span>></span> <span><span>td</span><span>><span>input </span><span>type</span><span>="text"</span><span> id</span><span>="dbpwd"</span><span> placeholder</span><span>="默认:<empty>"</empty></span><span>/></span><span>td</span><span>></span> <span></span><span>tr</span><span>></span> <span><span>tr</span><span>></span> <span><span>td</span><span>><span>label </span><span>for</span><span>="dbc"</span><span>></span>字符集:<span></span><span>label</span><span>></span><span>td</span><span>></span> <span><span>td</span><span>></span> <span><span>input </span><span>list</span><span>="charlist"</span><span> id</span><span>="dbc"</span><span> placeholder</span><span>="默认:utf8"</span> <span>/></span> <span><span>datalist </span><span>id</span><span>="charlist"</span><span>></span> <span><span>option </span><span>value</span><span>="utf8"</span> <span>/></span> <span><span>option </span><span>value</span><span>="gbk"</span> <span>/></span> <span><span>option </span><span>value</span><span>="gb2312"</span> <span>/></span> <span></span><span>datalist</span><span>></span> <span></span><span>td</span><span>></span> <span></span><span>tr</span><span>></span> <span><span>tr</span><span>></span> <span><span>td</span><span>><span>label </span><span>for</span><span>="dbtable"</span><span>></span>表名:<span></span><span>label</span><span>></span><span>td</span><span>></span> <span><span>td</span><span>><span>input </span><span>type</span><span>="text"</span><span> id</span><span>="dbtable"</span><span> placeholder</span><span>="为空代表所有表"</span><span>/></span><span>td</span><span>></span> <span></span><span>tr</span><span>></span> <span><span>tr</span><span>></span> <span><span>td</span><span>><span>label </span><span>for</span><span>="option"</span><span>></span>导出方式:<span></span><span>label</span><span>></span><span>td</span><span>></span> <span><span>td</span><span>></span> <span><span>input </span><span>type</span><span>="radio"</span><span> id</span><span>="option"</span><span> name</span><span>="option"</span><span> value</span><span>="0"</span><span> checked</span><span>="checked"</span><span>></span><span>浏览器显示 </span><span><span>input </span><span>type</span><span>="radio"</span><span> id</span><span>="option"</span><span> name</span><span>="option"</span><span> value</span><span>="1"</span><span>></span><span>下载到本地 </span><span><span>input </span><span>type</span><span>="radio"</span><span> id</span><span>="option"</span><span> name</span><span>="option"</span><span> value</span><span>="2"</span><span>></span><span>导出至服务器 </span><span></span><span>td</span><span>></span> <span></span><span>tr</span><span>></span> <span><span>tr</span><span>></span> <span><span>td</span><span>><span>input </span><span>type</span><span>="submit"</span><span> value</span><span>="开始"</span> <span>/></span><span>td</span><span>></span> <span></span><span>tr</span><span>></span> <span></span><span>table</span><span>></span> <span></span><span>fieldset</span><span>></span> <span></span><span>form</span><span>></span> <span></span><span>center</span><span>></span> <span></span><span>body</span><span>></span> <span></span><span>html</span><span>></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
用法也很简单,把sqldump.php传到服务器上,然后在本地运行sqldumpclient.html,写上相关参数就OK。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。
