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