What are the potential pitfalls of using titles as primary keys in a database for URL routing in PHP?

Using titles as primary keys in a database for URL routing in PHP can lead to issues such as duplicate titles, titles changing over time, and titles not being unique. To solve this problem, it is better to use an auto-incremented numerical primary key in the database and then use a unique slug field for the title in the URL.

// Sample code to implement unique slug field for URL routing
// Assuming you have a database table named 'posts' with fields 'id', 'title', and 'content'

// Create a new column 'slug' in the 'posts' table
ALTER TABLE posts ADD COLUMN slug VARCHAR(255) UNIQUE;

// Update existing posts to generate unique slugs based on titles
UPDATE posts SET slug = LOWER(REPLACE(title, ' ', '-'));

// Use the slug field in the URL routing
// Example URL: domain.com/post/{slug}