In a new article from DevShed, they walk you through a method of using abstraction and objects along with polymorphism to work with databases.
I'll be explaining how to implement Polymorphism to achieve a high level of abstraction when accessing different database systems. Subsequent articles will cover the use of polymorphic objects to build dynamic web documents and validate user-supplied input.
They start out with a bad example of a database link in a PHP script, a database handler that, based on what type of database you tell it you're using, handles the requests appropriately. This is good, but poor design - their alternative is using objects (created from classes of one type for each kind of database). These are pulled together in a factory class and the correct one is built - out into a generic database object that's smart enough to know what it's supposed to do.