国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

180 rindas
4.7KB

  1. <?php
  2. /**
  3. * SQL命令执行器
  4. *
  5. * @version $Id: sys_sql_query.php 1 22:28 2010年7月20日Z tianya $
  6. * @package DedeCMS.Administrator
  7. * @copyright Copyright (c) 2007 - 2018, DesDev, Inc.
  8. * @copyright Copyright (c) 2020, DedeBIZ.COM
  9. * @license https://www.dedebiz.com/license/v6
  10. * @link https://www.dedebiz.com
  11. */
  12. require(dirname(__FILE__)."/config.php");
  13. CheckPurview('sys_Data');
  14. if(empty($dopost)) $dopost = "";
  15. //查看表结构
  16. if($dopost=="viewinfo")
  17. {
  18. CheckCSRF();
  19. if(empty($tablename))
  20. {
  21. echo "没有指定表名!";
  22. }
  23. else
  24. {
  25. $dsql->SetQuery("SHOW CREATE TABLE ".$dsql->dbName.".".$tablename);
  26. $dsql->Execute('me');
  27. $row2 = $dsql->GetArray('me',MYSQL_BOTH);
  28. $ctinfo = $row2[1];
  29. echo "<xmp>".trim($ctinfo)."</xmp>";
  30. }
  31. exit();
  32. }
  33. //优化表
  34. else if($dopost=="opimize")
  35. {
  36. CheckCSRF();
  37. if(empty($tablename))
  38. {
  39. echo "没有指定表名!";
  40. }
  41. else
  42. {
  43. $rs = $dsql->ExecuteNoneQuery("OPTIMIZE TABLE `$tablename` ");
  44. if($rs) echo "执行优化表: $tablename OK!";
  45. else echo "执行优化表: $tablename 失败,原因是:".$dsql->GetError();
  46. }
  47. exit();
  48. }
  49. //优化全部表
  50. else if($dopost=="opimizeAll")
  51. {
  52. CheckCSRF();
  53. $dsql->SetQuery("SHOW TABLES");
  54. $dsql->Execute('t');
  55. while($row = $dsql->GetArray('t',MYSQL_BOTH))
  56. {
  57. $rs = $dsql->ExecuteNoneQuery("OPTIMIZE TABLE `{$row[0]}` ");
  58. if($rs)
  59. {
  60. echo "优化表: {$row[0]} ok!<br />\r\n";
  61. } else {
  62. echo "优化表: {$row[0]} 失败! 原因是: ".$dsql->GetError()."<br />\r\n";
  63. }
  64. }
  65. exit();
  66. }
  67. //修复表
  68. else if($dopost=="repair")
  69. {
  70. CheckCSRF();
  71. if(empty($tablename))
  72. {
  73. echo "没有指定表名!";
  74. }
  75. else
  76. {
  77. $rs = $dsql->ExecuteNoneQuery("REPAIR TABLE `$tablename` ");
  78. if($rs) echo "修复表: $tablename OK!";
  79. else echo "修复表: $tablename 失败,原因是:".$dsql->GetError();
  80. }
  81. exit();
  82. }
  83. //修复全部表
  84. else if($dopost=="repairAll")
  85. {
  86. CheckCSRF();
  87. $dsql->SetQuery("Show Tables");
  88. $dsql->Execute('t');
  89. while($row = $dsql->GetArray('t',MYSQL_BOTH))
  90. {
  91. $rs = $dsql->ExecuteNoneQuery("REPAIR TABLE `{$row[0]}` ");
  92. if($rs)
  93. {
  94. echo "修复表: {$row[0]} ok!<br />\r\n";
  95. } else {
  96. echo "修复表: {$row[0]} 失败! 原因是: ".$dsql->GetError()."<br />\r\n";
  97. }
  98. }
  99. exit();
  100. }
  101. //执行SQL语句
  102. else if($dopost=="query")
  103. {
  104. CheckCSRF();
  105. $sqlquery = trim(stripslashes($sqlquery));
  106. if(preg_match("#drop(.*)table#i", $sqlquery) || preg_match("#drop(.*)database#", $sqlquery))
  107. {
  108. echo "<span style='font-size:10pt'>删除'数据表'或'数据库'的语句不允许在这里执行。</span>";
  109. exit();
  110. }
  111. //运行查询语句
  112. if(preg_match("#^select #i", $sqlquery))
  113. {
  114. $dsql->SetQuery($sqlquery);
  115. $dsql->Execute();
  116. if($dsql->GetTotalRow()<=0)
  117. {
  118. echo "运行SQL:{$sqlquery},无返回记录!";
  119. }
  120. else
  121. {
  122. echo "运行SQL:{$sqlquery},共有".$dsql->GetTotalRow()."条记录,最大返回100条!";
  123. }
  124. $j = 0;
  125. while($row = $dsql->GetArray())
  126. {
  127. $j++;
  128. if($j > 100)
  129. {
  130. break;
  131. }
  132. echo "<hr size=1 width='100%'/>";
  133. echo "记录:$j";
  134. echo "<hr size=1 width='100%'/>";
  135. foreach($row as $k=>$v)
  136. {
  137. echo "<font color='red'>{$k}:</font>{$v}<br/>\r\n";
  138. }
  139. }
  140. exit();
  141. }
  142. if($querytype==2)
  143. {
  144. //普通的SQL语句
  145. $sqlquery = str_replace("\r","",$sqlquery);
  146. $sqls = preg_split("#;[ \t]{0,}\n#",$sqlquery);
  147. $nerrCode = ""; $i=0;
  148. foreach($sqls as $q)
  149. {
  150. $q = trim($q);
  151. if($q=="")
  152. {
  153. continue;
  154. }
  155. $dsql->ExecuteNoneQuery($q);
  156. $errCode = trim($dsql->GetError());
  157. if($errCode=="")
  158. {
  159. $i++;
  160. }
  161. else
  162. {
  163. $nerrCode .= "执行: <font color='blue'>$q</font> 出错,错误提示:<font color='red'>".$errCode."</font><br>";
  164. }
  165. }
  166. echo "成功执行{$i}个SQL语句!<br><br>";
  167. echo $nerrCode;
  168. }
  169. else
  170. {
  171. $dsql->ExecuteNoneQuery($sqlquery);
  172. $nerrCode = trim($dsql->GetError());
  173. echo "成功执行1个SQL语句!<br><br>";
  174. echo $nerrCode;
  175. }
  176. exit();
  177. }
  178. make_hash();
  179. include DedeInclude('templets/sys_sql_query.htm');