What are some best practices for handling user input and database queries when implementing navigation buttons in PHP?

When handling user input and database queries in PHP for navigation buttons, it is important to sanitize user input to prevent SQL injection attacks and validate input to ensure data integrity. Use prepared statements to securely execute database queries and handle errors gracefully to provide a better user experience.

// Example code snippet for handling user input and database queries in PHP for navigation buttons

// Sanitize user input
$page = isset($_GET['page']) ? filter_var($_GET['page'], FILTER_SANITIZE_STRING) : 'home';

// Validate input
$allowed_pages = ['home', 'about', 'contact'];
if (!in_array($page, $allowed_pages)) {
    $page = 'home';
}

// Prepare and execute database query
$stmt = $pdo->prepare("SELECT * FROM pages WHERE page_name = :page");
$stmt->bindParam(':page', $page);
$stmt->execute();
$page_data = $stmt->fetch(PDO::FETCH_ASSOC);

// Handle errors
if (!$page_data) {
    $error_message = "Page not found";
    // Redirect to a 404 error page or display an error message
}