connect_error) {
die("Connection failed: " . $conn->connect_error);
}
function safe_query($query) {
global $conn;
if (preg_match('/\b(SELECT|SHOW|DESCRIBE|EXPLAIN)\b/i', $query)) {
return $conn->query($query);
} else {
die("Only read-only queries allowed for safety.");
}
}
if (isset($_POST['query'])) {
$query = $_POST['query'];
$result = safe_query($query);
if ($result) {
echo "
Query executed successfully!
";
if ($result instanceof mysqli_result) {
echo "";
echo "";
// Show column names
foreach ($result->fetch_fields() as $field) {
echo "| {$field->name} | ";
}
echo "
";
while ($row = $result->fetch_assoc()) {
echo "";
foreach ($row as $value) {
echo "| " . htmlspecialchars($value) . " | ";
}
echo "
";
}
echo "
";
}
} else {
echo "Error: " . $conn->error . "
";
}
}
if (isset($_POST['import'])) {
$file = $_FILES['import_file'];
if ($file['type'] !== 'text/plain' && pathinfo($file['name'], PATHINFO_EXTENSION) !== 'sql') {
die("Invalid file type.");
}
$query = file_get_contents($file['tmp_name']);
$conn->multi_query($query);
echo "Import successful!
";
}
if (isset($_GET['export'])) {
$tables = array();
$result = $conn->query("SHOW TABLES");
while ($row = $result->fetch_assoc()) {
$tables[] = $row['Tables_in_' . $db_name];
}
$export = "-- Database: $db_name\n";
foreach ($tables as $table) {
$result = $conn->query("SELECT * FROM $table");
$export .= "-- Table: $table\n";
$createTable = $conn->query("SHOW CREATE TABLE `$table`")->fetch_assoc();
$export .= $createTable['Create Table'] . ";\n";
while ($row = $result->fetch_assoc()) {
$values = array();
foreach ($row as $field => $value) {
$values[] = "'" . addslashes($value) . "'";
}
$export .= "INSERT INTO `$table` VALUES (" . implode(", ", $values) . ");\n";
}
$export .= "\n";
}
header('Content-Type: text/plain');
header('Content-Disposition: attachment; filename="database.sql"');
echo $export;
exit;
}
if (isset($_GET['dump'])) {
$dump = "-- Database: $db_name\n";
$result = $conn->query("SHOW TABLES");
while ($row = $result->fetch_assoc()) {
$table = $row['Tables_in_' . $db_name];
$dump .= "-- Table: $table\n";
$createTable = $conn->query("SHOW CREATE TABLE `$table`")->fetch_assoc();
$dump .= $createTable['Create Table'] . ";\n";
$result_data = $conn->query("SELECT * FROM $table");
while ($row = $result_data->fetch_assoc()) {
$values = array();
foreach ($row as $field => $value) {
$values[] = "'" . addslashes($value) . "'";
}
$dump .= "INSERT INTO `$table` VALUES (" . implode(", ", $values) . ");\n";
}
$dump .= "\n";
}
header('Content-Type: text/plain');
header('Content-Disposition: attachment; filename="database.sql"');
echo $dump;
exit;
}
$conn->close();
?>