Generating a sitemap from a PHP PDO select query

A quick and easy method to generate a sitemap file from a PHP PDO select query with a foreach loop to add each URL into the sitemap.xml

This is all done using the PHP SimpleXmlElement class


$select_all = $db_connect()->query("SELECT `id`, `created_at` FROM `posts`;");
$posts = $select_all->fetchAll(PDO::FETCH_ASSOC);

$xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><urlset xmlns=""></urlset>');

$index = $xml->addChild('url');
$index->addChild('loc', '');//Add the home URL
$index->addChild('lastmod', '2023-08-20 10:00:00');
$index->addChild('changefreq', 'monthly');
$index->addChild('priority', '0.8');

foreach ($posts as $post) {//Loop through the posts
    $element = $xml->addChild('url');
    $element->addChild('loc', "{$post['id']}");
    $element->addChild('lastmod', $post['created_at']);
    $element->addChild('changefreq', 'monthly');
    $element->addChild('priority', '0.5');

$xml->asXML('sitemap.xml');//Write sitemap to file