国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

149 рядки
4.5KB

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