exec($sql); echo "Success.\n"; } catch (PDOException $e) { echo "Error running migration " . basename($file) . ": " . $e->getMessage() . "\n"; } } } function seed_data(PDO $pdo): void { $products = [ ['name' => 'Milk 1L', 'retailer' => 'Pick n Pay', 'price' => 25.99], ['name' => 'Milk 1L', 'retailer' => 'Checkers', 'price' => 24.99], ['name' => 'Bread (White)', 'retailer' => 'Pick n Pay', 'price' => 15.50], ['name' => 'Bread (White)', 'retailer' => 'Checkers', 'price' => 14.99], ['name' => 'Eggs (12 pack)', 'retailer' => 'Pick n Pay', 'price' => 32.00], ['name' => 'Eggs (12 pack)', 'retailer' => 'Checkers', 'price' => 31.50], ['name' => 'Cheese (250g)', 'retailer' => 'Pick n Pay', 'price' => 55.00], ['name' => 'Cheese (250g)', 'retailer' => 'Checkers', 'price' => 52.99], ]; $stmt = $pdo->prepare( 'INSERT INTO products (name, retailer, price) VALUES (:name, :retailer, :price) ON DUPLICATE KEY UPDATE price = VALUES(price)' ); echo "\nSeeding data...\n"; foreach ($products as $product) { try { $stmt->execute($product); echo "Seeded/Updated: " . $product['name'] . " (" . $product['retailer'] . ")\n"; } catch (PDOException $e) { echo "Error seeding " . $product['name'] . ": " . $e->getMessage() . "\n"; } } echo "Seeding complete.\n"; } try { $pdo = db(); run_migrations($pdo); seed_data($pdo); echo "\nDatabase setup complete!\n"; } catch (PDOException $e) { die("Database connection failed: " . $e->getMessage() . "\n"); }