科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件Flex中的MySQL管理(1)

Flex中的MySQL管理(1)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

首先需要创建一个非常简单的PHP脚本,它将以XML格式返回数据库列表、表或表中的数据。将该脚本安装到本地机器上的可运行目录下,然后使用curl命令向服务器发出请求。

2008年2月25日

关键字: MySQL Flex 软件

  • 评论
  • 分享微博
  • 分享邮件
Apple releases iPhone

  PHPMyAdmin的出现震撼了业界,这毫无疑问。它当然是基于PHP的最佳应用程序,因为它将MySQL管理界面由命令行的形式改为了web浏览器的形式。不过,虽然它的功能很强大,但使用并不太方便,界面也不够美观。因此,我尝试通过Rich Internet Application框架设计更理想的MySQL前台管理程序。

  要达成此目标本可选用Ajax。但我不想处理客户端的不兼容问题。当然,Silverlight也是不错的选择,但它仍不够成熟。 之所以选择Adobe Flex,是因为它拥有富用户接口工具集和方便的web服务集成功能,而且它生成的Flash应用程序能够以相同方式在任何操作系统中运行。

  我学习了很多有关创建应用程序方面的知识:如何为PHP程序创建安全的SQL web服务;如何通过Flex访问web服务;如何将web服务返回的数据输入数据网格中并显示。在本文中,我将引领读者从前台到后台,逐步创建MySQL管理程序。读者从中可了解一些有用的信息,以创建自己的Rich Internet应用程序。

  创建后台程序

  Flex应用程序擅长与web服务通讯,以发出请求及提交数据。因此,首先需要创建一个非常简单的PHP脚本,它将以XML格式返回数据库列表、表或表中的数据。

  清单1:req.php  

require_once("MDB2.php");

$sql = 'SHOW DATABASES';

if ( $_REQUEST['mode'] == 'getTables' )

$sql = 'SHOW TABLES';

if ( $_REQUEST['mode'] == 'getData' )

$sql = 'SELECT * FROM '.$_REQUEST['table'];

$dsn = 'mysql://root@localhost/'.$_REQUEST['db'];

$mdb2 =& MDB2::factory($dsn);

if (PEAR::isError($mdb2)) { die($mdb2->  require_once("MDB2.php");

  $sql = 'SHOW DATABASES';

  if ( $_REQUEST['mode'] == 'getTables' )

  $sql = 'SHOW TABLES';

  if ( $_REQUEST['mode'] == 'getData' )

  $sql = 'SELECT * FROM '.$_REQUEST['table'];

  $dsn = 'mysql://root@localhost/'.$_REQUEST['db'];

  $mdb2 =& MDB2::factory($dsn);

  if (PEAR::isError($mdb2)) { die($mdb2->getMessage()); }

  $dom = new DomDocument();

  $dom->formatOutput = true;

  $root = $dom->createElement( "records" );

  $dom->appendChild( $root );

  $res =& $mdb2->query( $sql );

  if (PEAR::isError($mdb2)) { die($mdb2->getMessage()); }

  while ($row = $res->fetchRow(MDB2_FETCHMODE_ASSOC))

  {

  $rec = $dom->createElement( "record" );

  $root->appendChild( $rec );

  foreach( array_keys( $row ) as $key ) {

  $key_elem = $dom->createElement( $key );

  $rec->appendChild( $key_elem );

  $key_elem->appendChild( $dom->createTextNode( $row[$key] ) );

  }

  }

  $res->free();

  $mdb2->disconnect();

  header( "Content-type: text/xml" );

  echo $dom->saveXML();

  >

  该脚本的第一项工作就是利用MDB2库连接数据库。如果没有安装MDB2库,则可使用PEAR安装该库,如下所示:

  % pear install MDB2

  %

  如果PEAR无法正常运行,可访问http://pear.php.net/mdb2,然后下载源代码并将其解包到PHP的include路径下。MDB2是通用的数据库适配器层,它已取代了广为使用的PEAR DB库。

  脚本的第二项工作就是创建XML DOM Document对象,该对象将用来创建要输出的XML树。从此处开始,它将运行查询,并在XML树中添加row和column作为XML标签。最后,该脚本将关闭所有连接,并将XML保存到PHP输出流中。

  选用XML DOM对象的原因是,它可避免任何与数据、不对称标签等有关的编码问题以及各种可能使XML产生混乱的因素。我可以将调试XML数据流的时间节省下来做其他许多更有意义的工作。您一定也会这样做。

  将该脚本安装到本地机器上的可运行目录下,然后使用curl命令向服务器发出请求。

  % curl http://localhost/sql/req.php  

  addresses    

  ajaxdb  

  ...

  %

  在本例中,我并未指定数据库或模式,这会要求脚本返回可用数据库的清单。假如web服务脚本有权执行该任务,则在curl语句后面就会显示执行的结果。在本例中,将以标签的形式显示不同数据库的列表。

  该脚本返回的所有数据都带有标签,它包含一组标签。每个标签的名称和内容取决于已执行的SQL语句。在本例中,只返回单列命名数据库。

  除了使用curl命令,还可将URL输入浏览器中,然后在加载页面后选择“View Source(查看源文件)”。

  在下例中,将连接articles数据库并获取它的表格列表。结果如下:

  % curl ".../req.php?mode=getTables&db=articles" 

  

  article 

  

  %

  articles数据库中只有一个名为article的表格,这并不奇怪。要运行经典的select * from article查询以获取所有记录,可使用以下URL:

  % curl ".../req.php?mode=getData&db=articles&table=article"

  

  

  1

  

  Apple Computer is going to release the iPhone...

  

  

  2

  

  Google, Inc. of Mountain View California has...

  

  

  %

  表格中有两条记录:第一条显示Apple公司将发布超炫的IPhone;第二条显示Google公司将发布同样很炫、但用途完全不同的Gears系统。

  在本地机器上安装了极为强大且灵活的后台程序后,就可以着手为其创建Flex前台程序了。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章