$table) { $temp = split("\?", $table); $c_query->select("count(*) as rows", $temp[0]); $all_rows += $c_query->f("rows"); } $xml = new c_xml(); $xml->shot_data = true; $xml->add_node("root"); $xml->add_node("flex", array('row'=>$all_rows)); $xml->end_node(); $file = fopen("{$program}{$date}.sql", "w"); $data = ""; for($i = 0;$i < count($array_db[$program]) ; $i++) { $temp = split("\?", $array_db[$program][$i]); $encode = array(); for($e = 0;$e < count($temp) ; $e++) { if($e == 0) { $table = $temp[$e]; } else { $encode[] = $temp[$e]; } } $c_query->query("SHOW CREATE TABLE {$table}"); $c_query->next_record(); $create = $c_query->f("Create Table"); $st = strpos($create, "CONSTRAINT"); if($st > 0) { if($alter == "") { $alter .= "`{$table}`\n"; } else { $alter .= "ALTER TABLE `{$table}`\n"; } $alter .= " ".substr($create, $st); $drop = substr($create, $st); $create = substr($create, 0, $st); $create = substr($create, 0, strrpos($create, ",")); $sp = strrpos($alter, ")"); $create .= "\n)".substr($alter, $sp + 1); $sp = strrpos($alter, "CASCADE"); $alter = substr($alter, 0, $sp + 7).";\n\n"; $st = strpos(" ".$drop, "CONSTRAINT"); if($st > 0) { if($drop_fk == "") { $drop_fk .= "`{$table}`\n"; } else { $drop_fk .= "ALTER TABLE `{$table}`\n"; } $end = ";\n\n"; } else { $end = ""; } while($st > 0) { $st = strpos($drop, "`", $st) + 1; $sp = strpos($drop, "`", $st); $fk = substr($drop, $st, $sp - $st); $drop_fk .= " DROP FOREIGN KEY `{$fk}`,\n"; $st = strpos($drop, "CONSTRAINT", $sp + 1); } if($end != "") { $drop_fk = substr($drop_fk, 0, -2).$end; } else { $drop_fk .= $end; } } if($btree == false) { $create = str_replace(" USING BTREE", "", $create); } $create = $c_main->encode("`{$table}`;\n".$create.";\n", "c_db_sum"); $data .= "\n\nDROP TABLE IF EXISTS {$create}\n"; $num += 4; $fields = ""; $c_query->select("*", $table); while($c_query->next_field()) { if(in_array($c_query->field(), $temp)) { $fields .= "`sum_encode_{$c_query->field()}`,"; } else { $fields .= "`{$c_query->field()}`,"; } } $fields = substr($fields,0,-1); $encode_insert = $c_main->encode("`{$table}` ({$fields}) VALUES", "f_db_sum"); $data .= "\nINSERT INTO {$encode_insert}"; $row = 0; while($c_query->next_record()) { $values = "\n ("; while($c_query->next_field()) { $value = $c_query->v($c_query->field()); if(in_array($c_query->field(), $temp)) { $value = $c_main->encode($value, "r_db_sum"); } if($value == null) { $values .= "NULL,"; } elseif ($c_query->field_type() == "int" || $c_query->field_type() == "real") { $values .= "$value,"; } else { $value = str_replace($search, $replace, $value); $values .= "'{$value}',"; } } $row++; if($row < $c_query->num_rows()) { if($row % 200 == 0) { $data .= substr($values,0,-1).");\nINSERT INTO {$encode_insert}"; $num ++; } else { $data .= substr($values,0,-1)."),"; } } else { $data .= substr($values,0,-1).");"; } $xml->add_node("node", null, true); $xml->end_node(); } $num += $row; } if($drop_fk != "") { $drop_fk = substr($drop_fk,0,-1); $drop_fk = $c_main->encode($drop_fk, "a_db_sum"); $drop_fk = "ALTER TABLE ".$drop_fk; } if($alter != "") { $alter = str_replace("CONSTRAINT", "ADD CONSTRAINT", $alter); $alter = $c_main->encode($alter, "a_db_sum"); $alter = "\n\nALTER TABLE ".$alter."\n"; } $num += 5; $data = "DATA ROW {$num}\n".$drop_fk.$data.$alter; fwrite($file, $data); fclose($file); if(!is_dir($folder)) { mkdir($folder, 0777); } $filename = $folder.base64_encode("{$program}[{$date}].zip"); $zip = new dZip($filename); $zip->addFile($program.$date.".sql", $program.$date.".sql"); $zip->save(); unlink($program.$date.".sql"); $xml->end_xml(); ?>