Bei meinen Projekten, sowohl kleinere als auch größere, mache ich es im allgemeinen so:
Ich hab eine eigene include-Datei mit allen Datenbankfunktionen, die ich nur in jenen Scripts mittlels require_once() einbinde, die auch Datenbankzugriff benötigen. Diese Datei enhält Funktionen für Standard-Datenbankoperationen wie select, insert/replace, update usw., die auch bereits das korrekte escapen von feldnamen und Werten übernehmen.
Die Datenbankverbindung wird am Anfang der Datei geöffnet und die Datenbank ausgewählt, schlägt das fehl wird entweder auf eine Fehlerseite umgeleitet (falls das Script übers web aufgerufen wurde), ansonsten wird eine Fehlermeldung ausgegeben.
Der "Handle" der mySQL-Verbindung steht dann in einer globalen Variable, ich nenne sie meistens $DB, auf die in den Funktionen zugegriffen wird.
z.B. habe ich eine funktion db_select($sql), die das übergebene SQL-Statement ausführt (wenn es sich um SELECT, SHOW, DESCRIBE etc.) handelt, ansonsten wird false zurückgegeben, ansonsten werden die Ergebniszeilen eingelesen und in einem Array abgelegt, welches dann zurückgegeben wird.