You've all missed the point.
You have to trust your servers not to be compromised. If your server is compromised, there is NOTHING you can do to stop your data from being obtained.
Even if the hard disc is entirely encrypted using the strongest encryption going, the key must be somewhere. And the attacker can simply replace the server with a fake which collects new data anyway. Or install keyloggers etc, to catch the key as it arrives (it must come from somewhere).
There is no point in storing stuff in a DB encrypted. If someone can gain unauthorised access to read it out of the DB, they will be able to obtain it anyway.
You are just obscuring stuff.
If you have an untrusted NETWORK between your web server and your database (which is a highly unlikely situation; I would rather you used a VPN), then you should enable SSL in MySQL which will encrypt everything between the web app and database, but will still store it unencrypted in the database. This is transparent to PHP.
I often work with credit card data, however, I have yet to find a reason for storing them from past transactions (despite my clients requesting that I do so) - I agree that it's a really bad idea.
If I did have a fit of temporary insanity and decide to store credit card details, I would still not encrypt them in the database.
Mark