so I'm trying my hand at PDO for a project after referring to w3schools but I keep getting this error
Call to a member function bindParam() on boolean
here's my code. I cannot figure out whats causing it
if (isset($data->title) && isset($data->content) && isset($data->lang) && isset($data->show_on_site)) {
    $response = array();
    try {
        $sql = 'INSERT INTO newsposts
            (heading, content, author, language,show_on_page)
             VALUES (:title, :content,:author,:lang,:show_on_site)';
        $stmt = $db->prepare($sql);
        $stmt->bindParam(':title', $db->real_escape_string($data->title), PDO::PARAM_STR);
        $stmt->bindParam(':content', $db->real_escape_string($data->content), PDO::PARAM_STR);
        $stmt->bindParam(':author', $_SESSION['user_session'], PDO::PARAM_STR);
        $stmt->bindParam(':lang', $db->real_escape_string($data->lang), PDO::PARAM_STR);
        $stmt->bindParam(':show_on_site', $db->real_escape_string($data->show_on_site), PDO::PARAM_BOOL);
        if ($stmt->execute()) {
            header_status(200);
            $response['status'] = 'Success';
            $response['message'] = 'Post Inserted';
        } else {
            header_status(400);
            $response['status'] = 'Error';
            $response['message'] = 'Something went wrong';
        }
        echo json_encode($response);
    } catch (exception $e) {
        header_status(503);
        $response['status'] = 'Error';
        $response['message'] = $e->getMessage();
        echo json_encode($response);
    }
 
    