Conserverei sicuramente le tue iscrizioni separatamente dalle informazioni sui tuoi membri. Questo non solo ti consentirà di avere un registro completo di tutti gli abbonamenti, ma ti aiuterà anche se hai bisogno di abbonamenti a lunghezza variabile. La struttura delle tue tabelle potrebbe essere qualcosa del genere:
subscriptions
-------------
subscription_id integer
member_id integer
start_date date
end_date date
date_paid datetime
Quindi puoi utilizzare SQL direttamente per trovare abbonamenti in scadenza, ecc. Quindi, per trovare abbonamenti in scadenza entro i prossimi sette giorni potresti avere qualcosa come
SELECT
member_id,
MAX(end_date) as expires_date
FROM
subscriptions
GROUP BY
member_id
HAVING
expires_date < DATE_ADD( CURDATE() INTERVAL 7 DAY )