false, 'message' => "Environment file not found" ]); exit; } try { $envDir = dirname($envFile); $dotenv = Dotenv::createImmutable($envDir, '.env.db'); $dotenv->load(); } catch (Throwable $e) { http_response_code(500); echo json_encode([ 'success' => false, 'message' => "Dotenv error: " . $e->getMessage() ]); } if (!isset($_ENV['DB_HOST']) || !isset($_ENV['DB_NAME']) || !isset($_ENV['DB_USER']) || !isset($_ENV['DB_PASSWORD'])){ echo json_encode([ 'success' => false, 'message' => 'corrupt cofig file' ]); exit; } $mysqli = @new mysqli($_ENV['DB_HOST'], $_ENV['DB_USER'], $_ENV['DB_PASSWORD'], $_ENV['DB_NAME']); if ($mysqli->connect_error) { echo json_encode([ 'success' => false, 'message' => "DB connection failed" ]); exit; } $mysqli->set_charset("utf8"); require __DIR__ . "/db-tables.php"; $tables = [$tableTurnerinnen, $tableOrders, $tableBasketItems, $tableKrProtokoll]; $cleartablearray = [$tableOrders, $tableBasketItems, $tableKrProtokoll]; require __DIR__ . "/../../resultate/newjson.php"; // Columns to set to 0 $columns0 = [ 'd-note balken', 'd-note boden', 'd-note sprung', 'd-note barren', 'e1 note sprung','e2 note sprung','e note sprung','neutrale abzuege sprung', 'e1 note barren','e2 note barren','e note barren','neutrale abzuege barren', 'e1 note balken','e2 note balken','e note balken','neutrale abzuege balken', 'e1 note boden','e2 note boden','e note boden','neutrale abzuege boden', 'bezahlt', 'bezahltoverride', 'rang', 'abteilung', 'startgeraet', 'anzabteilungen', 'startindex', 'bodenmusik' ]; $dir = __DIR__ . '/../../../test-wkvs/dbbackups'; if (!is_dir($dir)) { mkdir($dir, 0755, true); } $newdir = $dir ."/". date('Ymd_His'); if (!is_dir($newdir)) { mkdir($newdir, 0755, true); } foreach ($tables as $t){ $backupFile = $t . '_backup' . '.sql'; $filename = $newdir . '/' . $backupFile; $handle = fopen($filename, 'w'); if ($handle === false) { die("Cannot open file: $filename"); } $res = $mysqli->query("SHOW CREATE TABLE `$t`"); $row = $res->fetch_assoc(); fwrite($handle, $row['Create Table'] . ";\n\n"); $res = $mysqli->query("SELECT * FROM `$t`"); while ($row = $res->fetch_assoc()) { $columns = array_map(function($col){ return "`$col`"; }, array_keys($row)); $values = array_map(function($val) use ($mysqli) { return "'" . $mysqli->real_escape_string($val) . "'"; }, array_values($row)); fwrite($handle, "INSERT INTO `$t` (" . implode(", ", $columns) . ") VALUES (" . implode(", ", $values) . ");\n"); } fclose($handle); } // Columns to set to 10 $columns10 = [ 'note balken', 'note boden', 'note sprung', 'note barren' ]; $set = []; $params = []; $types = ''; // Add 0 columns foreach ($columns0 as $col) { $set[] = "`$col` = ?"; $params[] = '0'; $types .= 's'; } // Add 10 columns foreach ($columns10 as $col) { $set[] = "`$col` = ?"; $params[] = '10'; $types .= 's'; } // Add gesammtpunktzahl column $set[] = "`gesamtpunktzahl` = ?"; $params[] = '40'; $types .= 's'; // Build SQL $sql = "UPDATE turnerinnen SET " . implode(", ", $set); // Prepare $stmt = $mysqli->prepare($sql); if ($stmt === false) { die("Prepare failed: " . $mysqli->error); } // Bind parameters dynamically $bind_names[] = $types; for ($i = 0; $i < count($params); $i++) { $bind_names[] = &$params[$i]; // reference required } call_user_func_array([$stmt, 'bind_param'], $bind_names); // Execute if (!$stmt->execute()) { echo "Error: " . $stmt->error; } // Close $stmt->close(); foreach ($cleartablearray as $t) { $stmt = $mysqli->prepare("DELETE FROM ".$t); if (!$stmt->execute()) { echo "Error: " . $stmt->error; } $stmt->close(); } // $mysqli->close(); ?>