📄 sql.php
字号:
<br>
<script language='JavaScript'>
<!--
function selrev() {
with(myform) {
for(i=0;i<elements.length;i++) {
thiselm = elements[i];
if(thiselm.name.match(/table\[\w+\]/))
thiselm.checked = !thiselm.checked;
}
}
getsize();
}
function getsize(){
ts=0;
with(document.myform) {
for(i=0;i<elements.length;i++) {
thiselm = elements[i];
if(thiselm.datalength&&thiselm.checked)
ts += parseInt(thiselm.datalength);
}
totalsize.value=ts=ts.toString();
i=ts.length;
ts2='';
while(i>0){
if(ts2)ts2=','+ts2;
ts2=ts.substring(i-3,i)+ts2;
i-=3;
}
document.all.totalsizetxt.innerHTML=ts2;
}
}
getsize();
-->
</script>
<input name='action' type='hidden' id='action' value='selecttype'>
";
fbutton('submit','dosubmit','下一步',"onclick=getsize()");
fbutton('reset','doreset','重置',"onmouseup=setTimeout('getsize()',100)");
ffooter();
}
if($HTTP_POST_VARS['action']=="selecttype"){
fheader();
if($totalsize>1024*1024) $partsaveck="checked";
else $downloadck="checked";
echo "
<table width='500' border='0' cellspacing='1' cellpadding='3' bgcolor='#1B56C5' align=center>
<tr>
<td><font color='#FFFFFF' colspan='2'><strong>请选择导出方式</strong></font></td>
</tr>
<tr bgcolor='#D6DFF7'><td> 导出方式:</td><td>
<input name='back_type' value='download' type='radio' $downloadck>生成单个文件并下载 (备份的数据量较大时不建议使用)<br>
<input name='back_type' value='partsave' type='radio' $partsaveck>分为多个文件并保存在服务器
</td></tr>
</table>
<br>
<script language='JavaScript'>
function confirmit(){
with(myform){
if(back_type[0].checked && $totalsize>1024*1024 && !confirm(\"您要导出的数据量比较多({$totalsize_chunk} B),建议选择多文件导出方式。\\n点击“确定”继续导出单文件,“取消”返回更改。\"))
return false;
}
return true;
}
myform.onsubmit=new Function('return confirmit();');
</script>
<input name='action' type='hidden' id='action' value='selectoption'>
";
fbutton('submit','dosubmit','下一步');
fbutton('reset','doreset','重置');
ffooter();
}
if($HTTP_POST_VARS['action']=="selectoption"){
if($HTTP_POST_VARS['back_type']=="partsave"){
fheader();
echo "
您选择了多文件导出方式,总数据量 $totalsize_chunk 字节。<br><br>
<table width='500' border='0' cellspacing='1' cellpadding='3' bgcolor='#1B56C5' align=center>
<tr>
<td><font color='#FFFFFF' colspan='2'><strong>保存选项:</strong></font></td>
</tr>
<tr bgcolor='#D6DFF7'><td> 存放目录:</td><td> <input name='dir' value='{$db_dbname}sql' type='text' size=10>(相对本程序所在目录,必须有写入权限)</td></tr>
<tr bgcolor='#D6DFF7'><td> 主文件名:</td><td> <input name='filename' value='sqlback' type='text' size=10>.php (不含扩展名!)</td></tr>
<tr bgcolor='#D6DFF7'><td> 每个数据文件大小:</td><td> <input name='filesize' value='100000' type='text' size=10>(单位 B,1 MB = 1048576 B)</td></tr>
<tr bgcolor='#D6DFF7'><td> 数据导入密码:</td><td> <input name='back_pass' value='' type='password' size=10>(为了安全,导入时必须输入此密码)</td></tr>
<tr bgcolor='#D6DFF7'><td> 确认导入密码:</td><td> <input name='back_pass2' value='' type='password' size=10></td></tr>
</table>
<br>
<table width='500' border='0' cellspacing='1' cellpadding='3' bgcolor='#1B56C5' align=center>
<tr>
<td><font color='#FFFFFF' colspan='2'><strong>导入默认配置(导入时仍可更改):</strong></font></td>
</tr>
<tr bgcolor='#D6DFF7'><td> 服务器:</td><td> <input name='back_host' value='$db_host' type='text'></td></tr>
<tr bgcolor='#D6DFF7'><td> 数据库:</td><td> <input name='back_dbname' value='$db_dbname' type='text'></td></tr>
<tr bgcolor='#D6DFF7'><td> 该数据库不存在时自动创建:</td><td> <input name='back_autocreate' value=' checked ' type='checkbox' checked></td></tr>
</table><br>
<script language='JavaScript'>
function confirmit(){
with(myform){
if(back_pass.value==''||back_pass.value!=back_pass2.value){
alert('导入密码不能为空且两次输入密码必须相同。');
return false;
}
}
return true;
}
myform.onsubmit=new Function('return confirmit();');
</script>
<input name='action' type='hidden' id='action' value='databackup'>
";
fbutton('submit','dosubmit','下一步');
fbutton('reset','doreset','重置');
ffooter();
}
if($HTTP_POST_VARS['back_type']=="download"){
fheader();
echo "
您选择了单文件导出方式,总数据量 $totalsize_chunk 字节。<br><br>
<table width='500' border='0' cellspacing='1' cellpadding='3' bgcolor='#1B56C5' align=center>
<tr>
<td><font color='#FFFFFF' colspan='2'><strong>单文件导出-导入默认配置(导入时仍可更改):</strong></font></td>
</tr>
<tr bgcolor='#D6DFF7'><td> 服务器:</td><td> <input name='back_host' value='$db_host' type='text'></td></tr>
<tr bgcolor='#D6DFF7'><td> 数据库:</td><td> <input name='back_dbname' value='$db_dbname' type='text'></td></tr>
<tr bgcolor='#D6DFF7'><td> 该数据库不存在时自动创建:</td><td> <input name='back_autocreate' value=' checked ' type='checkbox' checked></td></tr>
<tr bgcolor='#D6DFF7'><td> 显示导入过程:</td><td> <input name='back_showlog' value=' checked ' type='checkbox'></td></tr>
</table>
<br>
<input name='action' type='hidden' id='action' value='databackup'>
";
fbutton('submit','dosubmit','导出');
fbutton('reset','doreset','重置');
ffooter();
}
}
if($HTTP_POST_VARS['action']=="databackup"){
function escape_string($str){
$str=mysql_escape_string($str);
$str=str_replace('\\\'','\'\'',$str);
$str=str_replace("\\\\","\\\\\\\\",$str);
$str=str_replace('$','\$',$str);
return $str;
}
function sqldumptable($table,$part=0) {
if($part) global $HTTP_POST_VARS,$lastcreate_temp,$tableid;
if(($tableid==0 and $HTTP_POST_VARS[page]==1) or $tableid>$lastcreate_temp or $part==0){
$dumpstring = "create(\"$table\",\"";
$dumpstring .= "(";
$firstfield=1;
$fields = mysql_query("SHOW FIELDS FROM `$table`");
while ($field = mysql_fetch_array($fields)) {
if (!$firstfield) {
$dumpstring .= ",";
} else {
$firstfield=0;
}
$dumpstring .= " $field[Field] $field[Type]";
if (!empty($field["Default"])) {
$dumpstring .= " DEFAULT '$field[Default]'";
}
if ($field['Null'] != "YES") {
$dumpstring .= " NOT NULL";
}
if ($field['Extra'] != "") {
$dumpstring .= " $field[Extra]";
}
}
mysql_free_result($fields);
$keys = mysql_query("SHOW KEYS FROM `$table`");
while ($key = mysql_fetch_array($keys)) {
$kname=$key['Key_name'];
if ($kname != "PRIMARY" and $key['Non_unique'] == 0) {
$kname="UNIQUE|$kname";
}
if(!is_array($index[$kname])) {
$index[$kname] = array();
}
$index[$kname][] = $key['Column_name'];
}
mysql_free_result($keys);
while(list($kname, $columns) = @each($index)){
$dumpstring .= ",";
$colnames=implode($columns,",");
if($kname == "PRIMARY"){
$dumpstring .= " PRIMARY KEY ($colnames)";
} else {
if (substr($kname,0,6) == "UNIQUE") {
$kname=substr($kname,7);
}
$dumpstring .= " KEY $kname ($colnames)";
}
}
$dumpstring .= ") ";
$statuses=mysql_query("SHOW TABLE STATUS");
while($status=mysql_fetch_array($statuses)){
if($status[Name]==$table){
$dumpstring .=" Type=$status[Type] COMMENT='$status[Comment]';\");\n\n";
mysql_free_result($statuses);
break;
}
else
continue;
}
if($tableid!=0 and $HTTP_POST_VARS[page]!=1 and $part) $HTTP_POST_VARS[lastcreate]++;
$HTTP_POST_VARS[lastinsert]=0;
dealdata($dumpstring);
}
$rows = mysql_query("SELECT count(*) as count FROM `$table` ");
$row = mysql_fetch_array($rows);
$rows = mysql_query("SELECT * FROM `$table` limit $HTTP_POST_VARS[lastinsert],$row[count] ");
$numfields=mysql_num_fields($rows);
while ($row = mysql_fetch_array($rows)) {
$dumpstring = "insert(\"$table\",\"";
$firstfield=1;
for ($i=0;$i<$numfields;$i++) {
if($part) $HTTP_POST_VARS[fin]+=strlen($row[$i]); //这个方法计算完成量不是很准确
if (!$firstfield) {
$dumpstring.=",";
} else {
$firstfield=0;
}
if (!isset($row[$i])) {
$dumpstring .= "NULL";
} else {
$dumpstring .= "'".escape_string($row[$i])."'";
}
}
$dumpstring .= "\");\n\n";
if($part) $HTTP_POST_VARS[lastinsert]++;
dealdata($dumpstring);
}
mysql_free_result($rows);
}
if($HTTP_POST_VARS[back_type]=="partsave"){//////////////////////// Save Data ////////////////////////////
$current_size=0;
function dealdata($data){
global $HTTP_POST_VARS,$current_size,$tablearr;
$current_size+=strlen($data);
writefile($data);
if($current_size>=intval($HTTP_POST_VARS["filesize"])){
$current_size=0;
writefile("\n ?>");
$HTTP_POST_VARS[page]++;
$finish=intval($HTTP_POST_VARS[fin]/$HTTP_POST_VARS[totalsize]*100);
fheader();
echo "<table width=500 cellspacing='1' cellpadding='3' align=center>
<tr><td><B>faisunSQL正在导出数据……</B></td>
<TR><td width=210 nowrap>
<select size=9>";
for($i=$HTTP_POST_VARS[lastcreate]+1;$i<9;$i++){
echo "<option></option>\n";
}
while(list($key,$val)=each($tablearr)){
if($key<$HTTP_POST_VARS[lastcreate]){
echo "<option style='color:#FF0000'>√ $val</option>\n";
}else if($key==$HTTP_POST_VARS[lastcreate]){
echo "<option selected>-= 以上数据表处理完成 =-</option>
</select><select size=9>
<option selected>-= 以下数据表正待处理 =-</option>\n<option>→ $val</option>\n";
}else{
echo "<option style='color:#666666'>· $val</option>\n";
}
}
echo "</select></td><td valign=top nowrap><BR><BR>正在从数据库'$HTTP_POST_VARS[db_dbname]'中导出数据……
<BR><BR>共有数据 ".num_chunk($HTTP_POST_VARS[totalsize])." 字节,每页导出≥ ".num_chunk(intval($HTTP_POST_VARS[fin]/$HTTP_POST_VARS[page]))." 字节。
<BR><BR>每页生成数据文件≥ ".num_chunk($HTTP_POST_VARS["filesize"])." B ,已生成 ".($HTTP_POST_VARS[page]-1)." 个数据文件。
<BR><BR>本页运行完成! 正在自动进入 <a href='javascript:myform.submit();'>第 $HTTP_POST_VARS[page] 页</a>……
<BR><BR><BR>估计已完成:≥{$finish}% <table width=250 height=12 border=0 cellspacing=1 cellpadding=0 bgcolor='#1B56C5'><tr><td width='$finish%' bgcolor='#1B56C5'><div></div></td><td width='".(100-$finish)."%' bgcolor='#D6DFF7'><div></div></td></tr></table>
<BR><BR>
</td></tr>
</table>";
ffooter();
echo "
<script language='Javascript'>
myform.submit();
</script>
";
exit();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -