While I'm a big fan of self learning, I think a key factor is whether you have any previous programming experience. PHP is an easy language to pick up, especially with a good book, but the whole mindset of programming is not so simple.
I got a firm grounding in programming in my first year in college, and that has made picking up different programming languages quite straightforward.
On the other hand, I recommended books to someone recently who wanted to learn some basic PHP/MySQL. This girl is extremely bright, and has run websites for years as a hobby after learning HTML etc very quickly. However, while the MySQL made some sense, she even found the introductory chapters on PHP very hard to get her head around, which I had not expected. From talking with her, I realised that the problem was the programming concepts rather than the PHP.
Once you understand programming it's a doddle, but I now see that it's very difficult otherwise, and even if you make some progress, you would be missing the big picture.
Good books I would recommend are (I can't link to them unfortunately because I don't have enough posts yet):
PHP and MySQL Web Development (Developer's Library): Luke Welling, Laura Thomson
4th edition just out, this was my bible back when I started so it's my personal favourite.
PHP Solutions: Dynamic Web Design Made Easy (Solutions): David Powers, Friends of ED
The girl I was helping had bought this book and I had a good flick through it and was very impressed. This book really focuses on practical web development and best practice. Lots of stuff you want to do on sites (logins, uploads, security) is covered really well here.
However, if you have no programming experience, I really think that a course would help you. I can't recommend one, but I would try to find one that concentrated more on the programming than the PHP, if that's possible. Once you get your head around variables and functions etc and start thinking like a programmer, the rest will be easy. Good luck!