The two big things to check for are SQL injection and remote code execution.
SQL injection happens when you take input from some untrusted source (i.e., the entire freaking world!) and use it as an SQL query. The fix is to stop using string substitution to build queries and updates, and to stick rigorously to parameterized queries/updates. Note that using magic quoting is a far inferior approach to dealing with this, since it is much easier to get it wrong; “always parameterize every query” is a simpler way that is easier to audit for. (Yes, you need to really audit all your code here. Sorry about that.)
Remote code execution is when you have any mechanism to allow a client of the website to ask the website to run PHP that isn't pre-loaded onto the website in a directory that the webserver can't write to. It's convenient, yes, but it ultra dangerous because a crafty cracker can ask the webserver to download a rootkit or other nefarious content. We used to get that a lot with our main webserver at work, so we now run it on a strictly read-only filesystem (with remote logging) with remote execution of PHP code (or, indeed, opening of any other connection to a non-white-listed server) strictly forbidden. It's tremendously frustrating to various external web-design consultancies that keep getting hired in, but that's because they're too often not very professional at the whole business of running a secure system, and it does mean that this whole class of attacks is locked out.
(The other thing to watch out for is XSS, though it's not exactly an attack on your site. That happens when you fail to quote untrusted content coming out of your database correctly, allowing nefarious content to be served up from your site without it actually being hacked per se. Defending your site from being on the receiving end of such things is important, but you've got to solve the more serious threats first so that your site isn't a toxic zombie any more.)