A good reason to consider using classes is that they allow your code at the very top level to be completely isolated from the details underneath. This might be helpful if, for instance, you chose to switch your database engine to postgresql instead of mysql, for instance. rather than having to change a bazillion references to mysql_query() and mysql_fetch_assoc() to something that works for postGRE, then you could just go to the class module where you defined your database and change a handful of functions there. all your code at the top level might not have to change. it might look like this:
$db->query('select * from table_x');
the basic concept there is called 'encapsulation' or 'information hiding'. this reading may or may not be interesting to you:
http://en.wikipedia.org/wiki/Information_hiding
classes are also pretty helpful when you have a really well-defined data object like 'customer'. if you wrote your classes right, you could so something like this at the top level of your code:
$cust = new customer('Joe', 'Blow', '(555) 555-5555', '123 brooks ave', 'las vegas, NE', '58374');
$cust->save();
i've had some exposure to classes before and am just now really writing anything interesting. so far, i've noticed a couple of pros and cons to them:
PROS:
top level code is really clean looking and easily understood because it isn't jumbled with implementation details and you are permitted to write a function called "save()" for many different objects rather than save_x() and save_y() etc.
if you create the right classes, it makes moving to a new operating system or database engine much easier. funny thing is you don't need a class to do this...you can just write subroutines that do what you want.
* i forgot what 3 is.
CONS:
If you want to alter the code, you have to go digging around in the appropriate class file to find the relevant code.
in some cases, it can be a hassle to construct class code. Especially if there are many subtle variations of a single operation that all require arguments, etc. The basic idea is that instead of just writing customer data to a database, you are delegating the writing of that data to another bit of code that you have to write yourself. if every customer gets treated pretty much the same, it can be quite beneficial BUT if every customer has some subtle variation that makes it different every time, it can be tricky.
jeez, i hope this is helpful. i kind of got lost writing that last point.