setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = " CREATE TABLE IF NOT EXISTS `inquiries` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NOT NULL, `company` VARCHAR(255) NULL, `email` VARCHAR(255) NOT NULL, `phone` VARCHAR(50) NULL, `message` TEXT NOT NULL, `source_page` VARCHAR(255) NULL, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP );"; $pdo->exec($sql); $sql_products = " CREATE TABLE IF NOT EXISTS `products` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NOT NULL, `description` TEXT NOT NULL, `images` TEXT, `material` VARCHAR(255), `application` VARCHAR(255), `url_slug` VARCHAR(255) NOT NULL UNIQUE, `seo_title` VARCHAR(255), `seo_meta_description` TEXT, `canonical_url` VARCHAR(255), `og_title` VARCHAR(255), `og_description` TEXT, `og_image` VARCHAR(255), `schema_type` VARCHAR(255) DEFAULT 'Product', `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP );"; $pdo->exec($sql_products); $sql_posts = " CREATE TABLE IF NOT EXISTS `posts` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `title` VARCHAR(255) NOT NULL, `slug` VARCHAR(255) NOT NULL UNIQUE, `content` TEXT NOT NULL, `author` VARCHAR(255), `image_url` VARCHAR(255), `published_at` DATETIME DEFAULT CURRENT_TIMESTAMP, `seo_title` VARCHAR(255), `seo_meta_description` TEXT, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP );"; $pdo->exec($sql_posts); } catch (PDOException $e) { error_log("DB setup failed: " . $e->getMessage()); // Do not die, just log the error. The page should still render. } } // Check if a flag file exists to prevent running this on every page load $migration_flag = __DIR__ . '/.migration_done'; if (!file_exists($migration_flag)) { run_migrations(); // Create the flag file file_put_contents($migration_flag, 'done'); }