修复数据库备份报错

This commit is contained in:
zyx0814 2024-01-29 15:17:48 +08:00
parent 4b9523e474
commit 0d03a65d32

View File

@ -66,12 +66,11 @@ if ($operation == 'export') {
$tables = C::t('setting') -> fetch('custombackup', true);
} else {
C::t('setting') -> update('custombackup', empty($_GET['customtables']) ? '' : $_GET['customtables']);
$tables = &$_GET['customtables'];
$tables = $_GET['customtables'];
}
//验证表名是否正确
foreach($tables as $key => $table){
if(!in_array($table,$alltabls)) unset($tables[$key]);
if(!in_array($table,$alltables)) unset($tables[$key]);
}
if (!is_array($tables) || empty($tables)) {
showmessage('database_export_custom_invalid');
@ -499,7 +498,7 @@ function sqldumptablestruct($table) {
}
$tablestatus = DB::fetch_first("SHOW TABLE STATUS LIKE '$table'");
$tabledump .= ($tablestatus['Auto_increment'] ? (" AUTO_INCREMENT=".$tablestatus['Auto_increment']): ''). ";\n\n";
$tabledump .= ($tablestatus['Auto_increment'] ? (" AUTO_INCREMENT=".$tablestatus['Auto_increment']) : ''). ";\n\n";
if ($_GET['sqlcompat'] == 'MYSQL40' && $db -> version() >= '4.1' && $db -> version() < '5.1') {
if ($tablestatus['Auto_increment'] <> '') {
$temppos = strpos($tabledump, ',');
@ -540,7 +539,7 @@ function sqldumptable($table, $startfrom = 0, $currsize = 0) {
if ($_GET['extendins'] == '0') {
while ($currsize + strlen($tabledump) + 500 < $_GET['sizelimit'] * 1000 && $numrows == $offset) {
if ($firstfield['Extra'] == 'auto_increment') {
$selectsql = "SELECT * FROM $table WHERE$firstfield['Field']> $startfrom ORDER BY$firstfield['Field']LIMIT $offset";
$selectsql = "SELECT * FROM $table WHERE ".$firstfield['Field']." > ".$startfrom." ORDER BY ".$firstfield['Field']." LIMIT " .$offset;
} else {
$selectsql = "SELECT * FROM $table LIMIT $startfrom, $offset";
}
@ -571,7 +570,8 @@ function sqldumptable($table, $startfrom = 0, $currsize = 0) {
} else {
while ($currsize + strlen($tabledump) + 500 < $_GET['sizelimit'] * 1000 && $numrows == $offset) {
if ($firstfield['Extra'] == 'auto_increment') {
$selectsql = "SELECT * FROM $table WHERE$firstfield['Field']> $startfrom LIMIT $offset";
$selectsql = "SELECT * FROM $table WHERE ".$firstfield['Field']." > ".$startfrom." LIMIT " .$offset;
} else {
$selectsql = "SELECT * FROM $table LIMIT $startfrom, $offset";
}