In what ways can the code provided be optimized to improve performance and readability in a PHP forum application?

The code can be optimized by using prepared statements to prevent SQL injection, implementing pagination for better performance, and organizing the code into functions for improved readability.

// Example of using prepared statements to prevent SQL injection
$stmt = $pdo->prepare("SELECT * FROM posts WHERE id = :id");
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
$stmt->execute();
$post = $stmt->fetch();

// Example of implementing pagination
$limit = 10;
$page = isset($_GET['page']) ? $_GET['page'] : 1;
$offset = ($page - 1) * $limit;
$stmt = $pdo->prepare("SELECT * FROM posts LIMIT :limit OFFSET :offset");
$stmt->bindParam(':limit', $limit, PDO::PARAM_INT);
$stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
$posts = $stmt->fetchAll();

// Example of organizing code into functions
function getPostById($pdo, $id) {
    $stmt = $pdo->prepare("SELECT * FROM posts WHERE id = :id");
    $stmt->bindParam(':id', $id, PDO::PARAM_INT);
    $stmt->execute();
    return $stmt->fetch();
}

function getPostsByPage($pdo, $page, $limit) {
    $offset = ($page - 1) * $limit;
    $stmt = $pdo->prepare("SELECT * FROM posts LIMIT :limit OFFSET :offset");
    $stmt->bindParam(':limit', $limit, PDO::PARAM_INT);
    $stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
    $stmt->execute();
    return $stmt->fetchAll();
}