Dunque alcune osservazioni:
  • quella funzione e' sostanzialmente due funzioni in una, quindi meglio separarle: una che restituisce il singolo post e una che gestisce la query con limit; usare limit quando estrai un solo record non ha senso
  • come gia' ha giustamente detto santino, e' meglio usare interfacce di piu' alto livello per interagire con il database ed evitare di scrivere le query concatenando stringhe: guadagni la comodita' di non doverti preoccupare di SQL injection ed altri problemi, oltre ad avere codice che puo' facilmente essere portato su altri database con minimi cambiamenti
  • SELECT * andrebbe generalmente evitato e andrebbero esplicitamente specificati quali campi vuoi estrarre: in questo modo se anche la struttura delle tabella cambia, non hai effetti collaterali sulle query che ne fanno uso
  • come conseguenza del punto precedente, la creazione manuale dell'array da inserire in $posts e' completamente inutile: se estrai solo i campi che ti interessano puoi direttamente fare $posts[] = $row;
  • per quanto riguarda semplice funzione o metodo di una classe, dipende dal contesto