setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Create Database if not exists $pdo->exec("CREATE DATABASE IF NOT EXISTS sudoku CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"); echo "Database 'sudoku' successfully checked/created.
"; } catch (PDOException $e) { die("DB Connection failed: " . $e->getMessage()); } // 2. Connect to the specific Database 'sudoku' try { $dsn = "mysql:host=$host;dbname=sudoku;charset=$charset"; $conn = new PDO($dsn, $user, $pass); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { die("Connection to 'sudoku' failed: " . $e->getMessage()); } // 3. Create 'users' table try { $sqlUsers = " CREATE TABLE IF NOT EXISTS users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci"; $conn->exec($sqlUsers); echo "Table 'users' successfully checked/created.
"; // Seed default users if table is empty $check = $conn->query("SELECT count(*) FROM users")->fetchColumn(); if ($check == 0) { $password = password_hash('123456', PASSWORD_DEFAULT); // Default password $sqlInsert = "INSERT INTO users (username, password) VALUES ('admin', '$password'), ('player1', '$password')"; $conn->exec($sqlInsert); echo "Default users (admin, player1) created with password '123456'.
"; } } catch (PDOException $e) { echo "Error Creating 'users': " . $e->getMessage() . "
"; } // 4. Create 'leaderboard_sudoku' table try { $sqlLeaderboard = " CREATE TABLE IF NOT EXISTS leaderboard_sudoku ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50), difficulty VARCHAR(10), time_seconds INT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP )"; $conn->exec($sqlLeaderboard); echo "Table 'leaderboard_sudoku' successfully checked/created.
"; } catch (PDOException $e) { echo "Error Creating 'leaderboard_sudoku': " . $e->getMessage() . "
"; } echo "
Setup Complete! You can now use the application."; ?>