国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

147 lines
4.6KB

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