📄 ad_mysql.php
字号:
$SKIN->form_yes_no( "enable_gzip", 1 )
) );
$ADMIN->html .= $SKIN->end_form( "开始备份论坛数据" );
$ADMIN->html .= $SKIN->end_table( );
$ADMIN->output( );
}
function view_sql( $sql )
{
global $IN;
global $INFO;
global $DB;
global $SKIN;
global $ADMIN;
global $std;
global $MEMBER;
global $GROUP;
$limit = 50;
$start = intval( $IN['st'] ) == "" ? 0 : intval( $IN['st'] );
$pages = "";
$ADMIN->page_detail = "此功能允许你管理你的 mySQL 数据库.{$extra}";
$ADMIN->page_title = "mySQL ".$this->true_version." 数据库管理工具";
$map = array( "processes" => "数据用户信息", "runtime" => "数据运行信息", "system" => "数据系统信息" );
if ( $map[$IN['code']] != "" )
{
$tbl_title = $map[$IN['code']];
$man_query = 0;
}
else
{
$tbl_title = "SQL 查询语句";
$man_query = 1;
}
if ( $man_query == 1 )
{
$SKIN->td_header[] = array( " ", "100%" );
$ADMIN->html .= $SKIN->start_form( array(
1 => array( "act", "mysql" ),
2 => array( "code", "runsql" )
) );
$ADMIN->html .= $SKIN->start_table( "运行 SQL 语句" );
$ADMIN->html .= $SKIN->add_td_row( array(
"<center>".$SKIN->form_textarea( "query", $sql )."</center>"
) );
$ADMIN->html .= $SKIN->end_form( "运行新 SQL 语句" );
$ADMIN->html .= $SKIN->end_table( );
if ( preg_match( "/^DROP|CREATE|FLUSH/i", trim( $sql ) ) )
{
$ADMIN->error = "对不起,为了安全起见,这些权限不允许。";
}
}
$DB->return_die = 1;
$DB->query( $sql );
if ( $DB->error != "" )
{
$SKIN->td_header[] = array( " ", "100%" );
$ADMIN->html .= $SKIN->start_table( "SQL 语句错误" );
$ADMIN->html .= $SKIN->add_td_row( array(
$DB->error
) );
$ADMIN->html .= $SKIN->end_table( );
$ADMIN->output( );
}
if ( preg_match( "/^INSERT|UPDATE|DELETE|ALTER/i", trim( $sql ) ) )
{
$SKIN->td_header[] = array( " ", "100%" );
$ADMIN->html .= $SKIN->start_table( "运行 SQL 语句完成" );
$ADMIN->html .= $SKIN->add_td_row( array(
"语句:{$sql}<br>执行成功"
) );
$ADMIN->html .= $SKIN->end_table( );
$ADMIN->output( );
}
else if ( preg_match( "/^SELECT/i", $sql ) && !preg_match( "/LIMIT[ 0-9,]+\$/i", $sql ) )
{
$rows_returned = $DB->get_num_rows( );
if ( $limit < $rows_returned )
{
$links = $std->build_pagelinks( array(
"TOTAL_POSS" => $rows_returned,
"PER_PAGE" => $limit,
"CUR_ST_VAL" => $start,
"L_SINGLE" => " ",
"L_MULTI" => "页:",
"BASE_URL" => $ADMIN->base_url."&act=mysql&code=runsql&query=".urlencode( $sql )
) );
$sql .= " LIMIT {$start}, {$limit}";
$DB->query( $sql, 1 );
}
}
$fields = $DB->get_result_fields( );
$cnt = count( $fields );
$i = 0;
for ( ; $i < $cnt; ++$i )
{
$SKIN->td_header[] = array(
$fields[$i]->name,
"*"
);
}
$ADMIN->html .= $SKIN->start_table( "结果:".$tbl_title );
if ( $links != "" )
{
$pages = $SKIN->add_td_basic( $links, "left", "tdrow2" );
$ADMIN->html .= $pages;
}
while ( $r = $DB->fetch_row( ) )
{
$rows = array( );
$i = 0;
for ( ; $i < $cnt; ++$i )
{
if ( $man_query == 1 && 200 < strlen( $r[$fields[$i]->name] ) )
{
$r[$fields[$i]->name] = substr( $r[$fields[$i]->name], 0, 200 )."...";
}
$rows[] = wordwrap( htmlspecialchars( nl2br( $r[$fields[$i]->name] ) ), 50, "<br>", 1 );
}
$ADMIN->html .= $SKIN->add_td_row( $rows );
}
$ADMIN->html .= $SKIN->end_table( );
$ADMIN->output( );
}
function run_tool( )
{
global $IN;
global $INFO;
global $DB;
global $SKIN;
global $ADMIN;
global $std;
global $MEMBER;
global $GROUP;
$ADMIN->page_detail = "此功能允许你管理你的 mySQL 数据库.{$extra}";
$ADMIN->page_title = "mySQL ".$this->true_version." 数据库管理工具";
$tables = array( );
foreach ( $IN as $key => $value )
{
if ( !preg_match( "/^tbl_(\\S+)\$/", $key, $match ) && !$IN[$match[0]] )
{
$tables[] = $match[1];
}
}
if ( count( $tables ) < 1 )
{
$ADMIN->error( "你必须选择需要执行此功能的数据表格。" );
}
if ( strtoupper( $IN['tool'] ) == "DROP" || strtoupper( $IN['tool'] ) == "CREATE" || strtoupper( $IN['tool'] ) == "FLUSH" )
{
$ADMIN->error( "对不起,你不能执行此操作!" );
}
foreach ( $tables as $table )
{
$DB->query( strtoupper( $IN['tool'] )." TABLE {$table}" );
$fields = $DB->get_result_fields( );
$data = $DB->fetch_row( );
$cnt = count( $fields );
$i = 0;
for ( ; $i < $cnt; ++$i )
{
$SKIN->td_header[] = array(
$fields[$i]->name,
"*"
);
}
$ADMIN->html .= $SKIN->start_table( "结果:".$IN['tool']." ".$table );
$rows = array( );
$i = 0;
for ( ; $i < $cnt; ++$i )
{
$rows[] = $data[$fields[$i]->name];
}
$ADMIN->html .= $SKIN->add_td_row( $rows );
$ADMIN->html .= $SKIN->end_table( );
}
$ADMIN->output( );
}
function list_index( )
{
global $IN;
global $INFO;
global $DB;
global $SKIN;
global $ADMIN;
global $std;
global $MEMBER;
global $GROUP;
$form_array = array( );
if ( $this->mysql_version < 32322 )
{
$extra = "<br><b>注意:你的 mySQL 数据库版本对某些功能进行了限制。</b>";
}
$ADMIN->page_detail = "此功能允许你管理你的 mySQL 数据库.{$extra}";
$ADMIN->page_title = "mySQL ".$this->true_version." 数据库管理工具";
$idx_size = 0;
$tbl_size = 0;
$ADMIN->html .= "\n\t\t\t\t <script language='Javascript'>\n <!--\n function CheckAll(cb) {\n var fmobj = document.theForm;\n for (var i=0;i<fmobj.elements.length;i++) {\n var e = fmobj.elements[i];\n if ((e.name != 'allbox') && (e.type=='checkbox') && (!e.disabled)) {\n e.checked = fmobj.allbox.checked;\n }\n }\n }\n function CheckCheckAll(cb) {\t\n var fmobj = document.theForm;\n var TotalBoxes = 0;\n var TotalOn = 0;\n for (var i=0;i<fmobj.elements.length;i++) {\n var e = fmobj.elements[i];\n if ((e.name != 'allbox') && (e.type=='checkbox')) {\n TotalBoxes++;\n if (e.checked) {\n TotalOn++;\n }\n }\n }\n if (TotalBoxes==TotalOn) {fmobj.allbox.checked=true;}\n else {fmobj.allbox.checked=false;}\n }\n //-->\n </script>\n ";
$ADMIN->html .= $SKIN->start_form( array(
1 => array( "act", "mysql" ),
2 => array( "code", "dotool" )
), "theForm" );
if ( 32303 <= $this->mysql_version )
{
$SKIN->td_header[] = array( "数据表", "20%" );
$SKIN->td_header[] = array( "数据纪录", "10%" );
$SKIN->td_header[] = array( "数据尺寸", "20%" );
$SKIN->td_header[] = array( "索引尺寸", "20%" );
$SKIN->td_header[] = array( "导出", "10%" );
$SKIN->td_header[] = array( "<input name=\"allbox\" type=\"checkbox\" value=\"全部选中\" onClick=\"CheckAll();\">", "10%" );
$ADMIN->html .= $SKIN->start_table( "华酷论坛数据表" );
$DB->query( "SHOW TABLE STATUS FROM `".$INFO['sql_database']."`" );
while ( $r = $DB->fetch_row( ) )
{
if ( !preg_match( "/^".$INFO['sql_tbl_prefix']."/", $r['Name'] ) )
{
}
else
{
$idx_size += $r['Index_length'];
$tbl_size += $r['Data_length'];
$iBit = 0 < $r['Index_length'] ? 1 : 0;
$tBit = 0 < $r['Data_length'] ? 1 : 0;
$idx = $this->gen_size( $r['Index_length'], 3, $iBit );
$tbl = $this->gen_size( $r['Data_length'], 3, $tBit );
$ADMIN->html .= $SKIN->add_td_row( array(
"<b><span style='font-size:12px'><a href='{$SKIN->base_url}&act=mysql&code=runsql&query=".urlencode( "SELECT * FROM {$r['Name']}" )."'>{$r['Name']}</a></span></b>",
"<center>{$r['Rows']}</center>",
"<div align='right'><span style='color:blue;font-size:12px'>{$tbl[0]} {$tbl[1]}</span></div>",
"<div align='right'>{$idx[0]} {$idx[1]}</div>",
"<center><a href='{$SKIN->base_url}&act=mysql&code=export_tbl&tbl={$r['Name']}'>导出</a></center></b>",
"<center><input name=\"tbl_{$r['Name']}\" value=1 type='checkbox' onClick=\"CheckCheckAll();\"></center>"
) );
}
}
$total = $idx_size + $tbl_size;
$iBit = 0 < $idx_size ? 1 : 0;
$tBit = 0 < $tbl_size ? 1 : 0;
$oBit = 0 < $total ? 1 : 0;
$idx = $this->gen_size( $idx_size, 3, $iBit );
$tbl = $this->gen_size( $tbl_size, 3, $tBit );
$tot = $this->gen_size( $total, 3, $oBit );
$ADMIN->html .= $SKIN->add_td_row( array(
" ",
"<div align='right'>共:(<b>{$tot[0]} {$tot[1]}</b>)</div>",
"<div align='right'><b>{$tbl[0]} {$tbl[1]}</b></div>",
"<div align='right'><b>{$idx[0]} {$idx[1]}</b></div>",
" "
) );
}
else
{
$SKIN->td_header[] = array( "数据表", "60%" );
$SKIN->td_header[] = array( "数据记录", "30%" );
$SKIN->td_header[] = array( "<input name=\"allbox\" type=\"checkbox\" value=\"全部选中\" onClick=\"CheckAll();\">", "10%" );
$ADMIN->html .= $SKIN->start_table( "华酷论坛数据表" );
$tables = $DB->get_table_names( );
foreach ( $tables as $tbl )
{
if ( !preg_match( "/^".$INFO['sql_tbl_prefix']."/", $tbl ) )
{
}
else
{
$DB->query( "SELECT COUNT(*) AS Rows FROM {$tbl}" );
$cnt = $DB->fetch_row( );
$ADMIN->html .= $SKIN->add_td_row( array(
"<b><span style='font-size:12px'>{$tbl}</span></b>",
"<center>{$cnt['Rows']}</center>",
"<center><input name='tbl_{$tbl}' type='checkbox' onClick=\"CheckCheckAll(this);\"></center>"
) );
}
}
}
if ( $this->mysql_version < 32322 )
{
$ADMIN->html .= $SKIN->add_td_basic( "<select id='button' name='tool'>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<option value='optimize'>优化选择的数据表</option>\n\t\t\t\t\t\t\t\t\t\t\t\t </select>\n\t\t\t\t\t\t\t\t\t\t\t\t <input type='submit' value='执行' id='button'></form>", "center", "tdrow2" );
}
else
{
$ADMIN->html .= $SKIN->add_td_basic( "<select id='button' name='tool'>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<option value='optimize'>优化选择的数据表</option>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<option value='repair'>修复选择的数据表</option>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<option value='check'>检查选择的数据表</option>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<option value='analyze'>分析选择的数据表</option>\n\t\t\t\t\t\t\t\t\t\t\t\t </select>\n\t\t\t\t\t\t\t\t\t\t\t\t <input type='submit' value='执行' id='button'></form>", "center", "tdrow2" );
}
$ADMIN->html .= $SKIN->end_table( );
$ADMIN->html .= $SKIN->start_form( array(
1 => array( "act", "mysql" ),
2 => array( "code", "runsql" )
) );
$SKIN->td_header[] = array( "数据表", "30%" );
$SKIN->td_header[] = array( "数据记录", "70%" );
$ADMIN->html .= $SKIN->start_table( "运行 SQL 语句" );
$ADMIN->html .= $SKIN->add_td_row( array(
"<b>SQL 查询语句</b><br>高级用户使用",
$SKIN->form_textarea( "query", "" )
) );
$ADMIN->html .= $SKIN->end_form( "运行 SQL 语句" );
$ADMIN->html .= $SKIN->end_table( );
$ADMIN->output( );
}
function gen_size( $val, $li, $sepa )
{
$sep = pow( 10, $sepa );
$li = pow( 10, $li );
$retval = $val;
$unit = "Bytes";
if ( $li * 1000000 <= $val )
{
$val = round( $val / ( 1073741824 / $sep ) ) / $sep;
$unit = "GB";
}
else if ( $li * 1000 <= $val )
{
$val = round( $val / ( 1048576 / $sep ) ) / $sep;
$unit = "MB";
}
else if ( $li <= $val )
{
$val = round( $val / ( 1024 / $sep ) ) / $sep;
$unit = "KB";
}
if ( $unit != "Bytes" )
{
$retval = number_format( $val, $sepa, ".", "," );
}
else
{
$retval = number_format( $val, 0, ".", "," );
}
return array(
$retval,
$unit
);
}
function gzip_four_chars( $val )
{
$i = 0;
for ( ; $i < 4; ++$i )
{
$return .= chr( $val % 256 );
$val = floor( $val / 256 );
}
return $return;
}
}
@set_time_limit( 1200 );
ad_mysql( );
$idx = new ad_mysql( );
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -