<?php
// Database export script for production deployment
include 'includes/db.php';
// Set execution time limit
set_time_limit(300);
// Output file
$backup_file = 'database_backup_' . date('Y-m-d_H-i-s') . '.sql';
// Get all tables
$tables = array();
$result = $conn->query("SHOW TABLES");
while ($row = $result->fetch_row()) {
$tables[] = $row[0];
}
$sql_dump = "-- M-AUTO Database Backup\n";
$sql_dump .= "-- Generated on: " . date('Y-m-d H:i:s') . "\n";
$sql_dump .= "-- Database: m11\n\n";
$sql_dump .= "SET SQL_MODE = \"NO_AUTO_VALUE_ON_ZERO\";\n";
$sql_dump .= "SET AUTOCOMMIT = 0;\n";
$sql_dump .= "START TRANSACTION;\n";
$sql_dump .= "SET time_zone = \"+00:00\";\n\n";
$sql_dump .= "/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;\n";
$sql_dump .= "/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;\n";
$sql_dump .= "/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;\n";
$sql_dump .= "/*!40101 SET NAMES utf8mb4 */;\n\n";
foreach ($tables as $table) {
// Get table structure
$sql_dump .= "-- --------------------------------------------------------\n";
$sql_dump .= "-- Table structure for table `$table`\n";
$sql_dump .= "-- --------------------------------------------------------\n\n";
$sql_dump .= "DROP TABLE IF EXISTS `$table`;\n";
$create_table = $conn->query("SHOW CREATE TABLE `$table`");
$row = $create_table->fetch_row();
$sql_dump .= $row[1] . ";\n\n";
// Get table data
$sql_dump .= "-- Dumping data for table `$table`\n";
$sql_dump .= "-- --------------------------------------------------------\n\n";
$result = $conn->query("SELECT * FROM `$table`");
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
$sql_dump .= "INSERT INTO `$table` (";
$columns = array_keys($row);
$sql_dump .= "`" . implode("`, `", $columns) . "`";
$sql_dump .= ") VALUES (";
$values = array();
foreach ($row as $value) {
if ($value === null) {
$values[] = "NULL";
} else {
$values[] = "'" . $conn->real_escape_string($value) . "'";
}
}
$sql_dump .= implode(", ", $values);
$sql_dump .= ");\n";
}
}
$sql_dump .= "\n";
}
$sql_dump .= "COMMIT;\n\n";
$sql_dump .= "/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;\n";
$sql_dump .= "/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;\n";
$sql_dump .= "/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;\n";
// Save to file
file_put_contents($backup_file, $sql_dump);
echo "<h2>Database Export Completed!</h2>";
echo "<p>Backup file created: <strong>$backup_file</strong></p>";
echo "<p>File size: " . formatBytes(filesize($backup_file)) . "</p>";
echo "<p><a href='$backup_file' download>Download Backup File</a></p>";
function formatBytes($size, $precision = 2) {
$base = log($size, 1024);
$suffixes = array('B', 'KB', 'MB', 'GB', 'TB');
return round(pow(1024, $base - floor($base)), $precision) . ' ' . $suffixes[floor($base)];
}
$conn->close();
?>