织梦SQL命令执行器分析

织梦sql命令执行器是一个对于学习sql语言的朋友来说,是一个非常小巧而实用的工具,如果精通sql的话,那么,我们直接不用phpadmin或数据库查看工具,查看数据库表信息了,直接用这个工具,除了不能删除数据库和数据库表外,其它,所有sql命令都可以在这里实
  织梦sql命令执行器是一个对于学习sql语言的朋友来说,是一个非常小巧而实用的工具,如果精通sql的话,那么,我们直接不用phpadmin或数据库查看工具,查看数据库表信息了,直接用这个工具,除了不能删除数据库和数据库表外,其它,所有sql命令都可以在这里实现,也就是我们要看查看表、创建表、修改表、优化表、更新表等等操作都可以用这个命令执行器来实现。

  命令执行器位置:织梦后台——>系统——>SQL命令行工具,如下图所示。

织梦sql命令运行器

  这个sql命令执行器,实际上分二个大功能,一个是上面的对系统表进行优化、修复和查看表结构,实现对表的宏观操作,并没有操作表的具体值;下面是查询这个表里面的字段值,就是查询表里面的具体内容,主要通过sql,当然,还可以更新表、修改表等,还可以从更宏观的角度来操作表,甚至是操作数据库,例如,创建数据库,创建表等操作。

  下面我们主要分析织梦的这上面和下面二个功能的实现。

  实现原理:无论我们是用上面的修复表、优化表还是下面的单行或多行查询表,它们的原理都是一样的。例如,当我们点击修复表时,这时就会把修复命令传到程序文件sys_sql_query.php(这个是处理这个命令执行器的程序,对应的模板是sys_sql_query.htm),然后,通过执行sql修复表语句:REPAIR TABLE `$tablename`(这个表名是我们在点修复前,选择中的要修复的表),进行修复操作,修复完后,返回成功信息。

  这个修复功能的实现跟下面的sql语句的执行(例如,查询表)原理是完全一样。举例:如果我们要查询主表中的标题,首先,选中执行的类型,即可单行执行还是多行,然后,我们就可以在下面的写入sql语句:select title from dede_archives,当我们点击确定后,通过表单把这条sql查询语句,传送程序文件sys_sql_query.php里面,然后,程序就会执行这查询语句,成功后,返回成功信息。出错时返回出错信息。其它语句的查询也是如此,大同小异。

  这些功能的实现,都是通过把表单提交给程序文件sys_sql_query.php来实现的,正常情况下,如果我们提交表单,都是会转到程序文件sys_sql_query.php这个路径(在地址栏,我们会看到变化)下面,来显示结果,但是在这个命令执行器里面,我们发现,无论执行什么样的命令,都在“返回信息”这个区域显示,这是这个教程里面的另一个技巧。

  这个小小的功能是如何实现的?我们打开模板文件sys_sql_query.htm,我们发现有二个表单,为了方便讲解,把不必要的表单内容删掉后,如下:

表单一、    <form action="sys_sql_query.php" method="post" name="infoform" target="stafrm">
          <input type='hidden' name='dopost' value='viewinfo' />
 
          <td height="200" align="center">返回信息:</td>
            <td> <iframe name="stafrm" frameborder="0" id="stafrm" width="100%" height="100%"></iframe></td></tr>
    </form>


表单二、<form action="sys_sql_query.php" method="post" name="form1" target="stafrm"></form>

  上面的二个表单,里面都有target="stafrm",第一个表单里面有一个框架<iframe name="stafrm" frameborder="0" id="stafrm" width="100%" height="100%"></iframe>,这个框架就是显示返回信息用的,我们看这个框架里面name值是stafrm,正好是表单target="stafrm"的值。

  在表单里面target="stafrm" 意思是提交表单给action="sys_sql_query.php"后,显示的内容在哪里,target="stafrm"里面的值stafrm正是框架里面name的值,意思就是sys_sql_query.php处理表单住处后,要在框架这一块显示返回的内容,这一小技巧应用非常广,例如有时候,我们看到一个网站上有一个功能,例如调查问卷,在线测试等,当点提交的时候,当前的页面没有动,结果,当前页面显示出来的结果,很多都是用框架实现的。当然,这个用jquery也能实现这样的看上去无刷新页面,就可以看到结果的效果。

  分析命令处理器文件sys_sql_query.php:

  打开文件sys_sql_query.php,在第二行有这么一句,这是用来检测用户权限的CheckPurview('sys_Data'),以后我们做织梦二次开发时,也可以用这个权限技巧,来达到让不同的用户进行不同的操作,例如,本例中,如果你是用信息发布员身份进入后台的,那么,你就不没有这个权限进行sql操作了。

  接下来的代码就把“修复选中表、修复全部表、优化选中表、优化全部表和查看表结构”,进行分别处理代码。当我们点后面的按扭时,例如点击“查看表结构”,即模板里面对应代码:<input type="Submit" name="Submit3"value="查看表结构" onClick="this.form.dopost.value='viewinfo'; " />,这个按扭代码里面,通过js鼠标事件onClick,把键值对dopost=viewinfo传到了,这个表单action里面的sys_sql_query.php文件,然后,由这个文件里面的 $dsql->SetQuery("SHOW CREATE TABLE ".$dsql->dbName.".".$tablename)这句,设置sql代码,进行查询。然后,再把结果返回给模板里面的框架,然后,我们在点“查看表结构”后,就在“返回信息”那一块看到了返回的结果。

  其它四按扭功能都跟这个完全一样,唯一不一样的就是处理的sql语句。关于sql语句,如果不会大家可以查询一下手册。下面的命令执行行,跟这个原里完全一样,不一样的是除了sql外,还有提交方式是点下面的“确定”,其实,跟上面五个按扭一样,这个确定也是一个按扭,只不过是上面的文字不一样。
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

dedecms织梦无需登录注册可下单购买的修改,首先找到/plus/carbuaction.php文件,找到如下代码: //确认用户登录信息if($cfg_ml-IsLogin()){ $userid = $cfg_ml-M_ID;}else{ $username = trim($username); $password = trim($password); if(empty($username)
用过织梦dedecms的人都知道,织梦会员系统相当强大,跟论坛程序差不多,对于使用会员系统的人来说,织梦系统足够用的了,但是,有时候,织梦系统很多的地方又不是我们所希望,或都说,有的地方不适合我们使用,这时候就要对织梦会员系统进行二次开发,所以,
我们在做 织梦模板 开发时,有时需要在artlist 和list标签中调用出图集中的图片,同时可以自定调用几张图片。跟版网整理了个一个这样功能的自定义函数。调用后效果如下: dedecms织梦artlist和list标签调用图集图片实现方法 函数代码 请将代码加入到 /includ
大家都知道,Discuz程序在发文章时有个【隐藏】功能,可以限制这个隐藏内容供某些级别的会员查看。 在织梦模板中,做些改动,也是可以实现的。例如:电话号码,下载地址等等。 前提是织梦开启会员功能,已经有了自定义字段。 一、建立文件 ajax_loginsta_c.p
大家在使用织梦的时候,用到会员中心可能涉及到多二级域名同步登录退出的问题,涉及到跨域,那么这个问题该如何解决呢?在一个技术大牛博客看到过此教程,特此转发分享给大家,解决大家问题。 首先打开 \include\dedeajax2.js 找到 DedeXHTTP = new XMLHttpR
大家在使用织梦标签调用手机站内容页上一篇下一篇的时候,发现下一篇调用的是上一篇的内容,织梦DEDE默认手机版内容页面点击下一篇却跳转到了上一篇怎么办? 这段代码可能是官方写错造成的,首先找到网站目录下面的/include/arc.archives.class.php文件,打