getMessage()); } return null; } if ($_SERVER["REQUEST_METHOD"] === "POST" && isset($_POST["dbtype"])) { $_SESSION["dbtype"] = $_POST["dbtype"]; $_SESSION["host"] = $_POST["host"]; $_SESSION["dbname"] = $_POST["dbname"]; $_SESSION["user"] = $_POST["user"]; $_SESSION["pass"] = $_POST["pass"]; header("Location: " . $_SERVER["PHP_SELF"]); exit(); } if (isset($_GET["logout"])) { session_destroy(); header("Location: " . $_SERVER["PHP_SELF"]); exit(); } $action = $_GET["action"] ?? ""; if ($action === "get_tables") { $pdo = getConnection(); if (!$pdo) { exit(json_encode([])); } $type = $_SESSION["dbtype"]; $stmt = $type === "mysql" ? $pdo->query("SHOW TABLES") : $pdo->query( "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'" ); $tables = $stmt->fetchAll(PDO::FETCH_COLUMN); header("Content-Type: application/json"); echo json_encode($tables); exit(); } if ($action === "get_data") { $pdo = getConnection(); $table = preg_replace("/[^a-zA-Z0-9_]/", "", $_GET["table"] ?? ""); $offset = (int) ($_GET["offset"] ?? 0); $limit = 100; if (!$pdo || !$table) { exit("❌ Table not provided or no connection."); } $type = $_SESSION["dbtype"]; $columns = []; $pk = null; try { if ($type === "mysql") { $pkStmt = $pdo->query( "SHOW KEYS FROM `$table` WHERE Key_name = 'PRIMARY'" ); $pkRow = $pkStmt->fetch(PDO::FETCH_ASSOC); $pk = $pkRow["Column_name"] ?? null; $stmt = $pdo->query( "SELECT * FROM `$table` LIMIT $limit OFFSET $offset" ); } else { $pkStmt = $pdo->prepare( "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE OBJECTPROPERTY(OBJECT_ID(CONSTRAINT_SCHEMA + '.' + QUOTENAME(CONSTRAINT_NAME)), 'IsPrimaryKey') = 1 AND TABLE_NAME = ?" ); $pkStmt->execute([$table]); $pk = $pkStmt->fetchColumn(); $stmt = $pdo->query( "SELECT * FROM [$table] ORDER BY [$pk] OFFSET $offset ROWS FETCH NEXT $limit ROWS ONLY" ); } $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); if (count($rows)) { $columns = array_keys($rows[0]); } if (!$pk && count($columns)) { $pk = $columns[0]; } echo "
"; foreach ($columns as $col) { echo ""; } echo ""; foreach ($rows as $row) { echo ""; foreach ($columns as $col) { $val = htmlspecialchars($row[$col]); $cellID = "$table|$pk|{$row[$pk]}|$col"; echo ""; } echo ""; } if (count($columns)) { echo ""; foreach ($columns as $col) { echo ""; } echo ""; } echo "
" . htmlspecialchars($col) . "Action
$val
"; echo "
"; } catch (Exception $e) { echo "
Error: " . htmlspecialchars($e->getMessage()) . "
"; } exit(); } if ($action === "update_cell") { [$table, $pkCol, $pkVal, $col] = explode("|", $_POST["id"]); $val = $_POST["val"]; $pdo = getConnection(); $stmt = $pdo->prepare("UPDATE `$table` SET `$col` = ? WHERE `$pkCol` = ?"); $stmt->execute([$val, $pkVal]); exit("OK"); } if ($action === "delete_row") { $table = $_GET["table"]; $pk = $_GET["pk"]; $val = $_GET["val"]; $pdo = getConnection(); $stmt = $pdo->prepare("DELETE FROM `$table` WHERE `$pk` = ?"); $stmt->execute([$val]); exit("Deleted"); } if ($action === "insert_row") { $table = $_GET["table"]; parse_str(file_get_contents("php://input"), $data); $pdo = getConnection(); $cols = array_keys($data); $vals = array_values($data); $sql = "INSERT INTO `$table` (`" . implode("`,`", $cols) . "`) VALUES (" . rtrim(str_repeat("?,", count($cols)), ",") . ")"; $stmt = $pdo->prepare($sql); $stmt->execute($vals); exit("Inserted"); } if ($action === "upload" && $_SERVER["REQUEST_METHOD"] === "POST") { if (!isset($_FILES["file"])) { exit("No file."); } $target = __DIR__ . "/" . basename($_FILES["file"]["name"]); if (move_uploaded_file($_FILES["file"]["tmp_name"], $target)) { exit("✅ " . htmlspecialchars($_FILES["file"]["name"])); } else { exit("❌ Failed."); } } ?> Mini SQL Admin

Mini MYSQL Admin Panel


📤