setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo_init->exec("CREATE DATABASE IF NOT EXISTS `" . DB_NAME . "`"); $pdo_init = null; } catch(PDOException $e) { // Don't die, the main connection will handle it } function db(): PDO { static $pdo; if ($pdo) { return $pdo; } $dsn = "mysql:host=" . DB_HOST . ";dbname=" . DB_NAME . ";charset=" . DB_CHARSET; $options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]; try { $pdo = new PDO($dsn, DB_USER, DB_PASS, $options); return $pdo; } catch (PDOException $e) { // In a real app, you'd log this error. // For this setup, we'll just show a generic error. die('Database connection failed. Please check config and ensure MySQL is running.'); } } ?>