I just finished an introduction course in PHP, and throughout the stackoverflow forum people have recommended that I switch to PDO, prepared statements or MYSQLi, I briefly checked the manual but most of it went over my head. 

I've been using mysql\_\* functions up till now so these concepts are new to me. I think they are used to access and perform database specific actions, but I'm not sure.

So what is the difference between PDO, prepared statements and MySQLi, are they different features that accomplishes the same task? Are they compatible in a script or is it "choose one or the other"? And lastly which offers the best performance?

Update: Thanks for the answers, I'll be hunting for more PDO tutorials. 

For reference I also found the following posts useful:

[Which one is fast and light - mysqli or PDO](https://stackoverflow.com/questions/10696696/which-one-is-fast-and-light-mysqli-or-pdo)

[mysqli or PDO - what are the pros and cons?](https://stackoverflow.com/questions/13569/mysqli-or-pdo-what-are-the-pros-and-cons)