文章教程

3.5下载表数据

9/17/2020 9:43:31 PM 人评论 次浏览

3.5 下载表数据

作为数据库的管理者,要经常备份表中的数据。当然可以利用数据库提供的命令去做这个备份工作,但是如果不想将管理权限开放给一般用户,你可以采取开发一个备份功能的Web画面让用户完成对数据的备份。本节将构筑从Web画面上以TDV(Tab Delimited Value Tab空格间隔)文件的形式下载数据库里的表数据,进行备份的应用。

alt

alt

alt

本例要点

将数据显示在画面上与下载数据、数据库抽出的逻辑是相同的。但是,数据抽出前必须告诉浏览器这些数据是用于显示的,还是用于下载的。

控制这些的就是如何设置画面的header了,即显示或下载必须在header函数中设置不同的值。本节代码都是一些固定模式的东西,在其他相似的应用中会经常用到。

目录结构

alt

本例代码

alt

取得指定数据库的所有的表。上几节中为了使用预留置换位而使用了prepare方法,这里针对固定的SQL命令时,使用query方法,代码会变得简洁。query方法也返回结果集。

alt

query方法返回的结果集,使用3.3节中介绍的fetch方法一行一行取出。取出模式设为FETCH_NUM(一般数组),用“$数组名[序号]”的形式取得具体的数值。

alt

抽出showList.php中指定的表的全部数据。

请注意SQL命令的表名部分,不能指定预约字符(如insert,from等),同时如3.1节中介绍的那样,必须对字符串进行单双引号的转换,不然会产生SQL提交脆弱性的问题。

alt

columnCount方法返回结果集中的列数,getColumnMeta方法返回结果集第$i列的配置信息(名称,数据类型)。

这里for语句按照列的数目,进行循环,在TDV文件中输出各个列名。

列名后要加上改行符(\n)。

alt

这里的二重循环,其中,外层的while按照结果的数量进行循环,内层的for按照列数进行循环,这样就将表中的所有数据都输出到TDV文件中了。

下载数据最后会用类似于Excel的应用程序打开,而Excel中使用的字符代码为GB2312,因此要进行UTF-8到GB2132的变换。

alt


知识专栏:MySQL Front

MySQL基本上是利用CUI(Character User Interface)进行数据库管理的。数据登录时,必须在命令行窗口中,使用SQL命令进行登录。而且就算想确认表的内容时,也必须一次次地在命令行窗口中使用SQL命令。这对程序开发人员来说,非常不方便。

下述网站(http://www.sql-front.com/)提供了一个称MySQL-Front的GUI工具。使用MySQL-Front工具可以方便、高效地进行数据的查询、编辑及数据库和表的管理等,如图3-3所示。

alt

图3-3 MySQL-Front工具


教程类别