eddyy93 каза:
Защо PDO?
Какво дава PDO допълнително от колкото стандартните заявки?
Аз само ще допълня с малко информация. Какво дава допълнително? Дава ти OOP интерфейс към MySQL и поддръжка на някои неща като Prepared statements, които стария mysql драйвър няма.
Погледни червения текст тук: http://php.net/manual/en/function.mysql-connect.php
Може да видиш и това, за съпоставка между mysql, mysqli и PDO: http://php.net/manual/en/mysqlinfo.api.choosing.php
Прочетох че prepare statment защитава от SQL Injection, как го постига и това означава ли, че няма нужда от addslashes, htmlspecialchars etc. ... ?
Сега Prepared statements защитава от sql инжекции, защото (при server-side Prepared Statements) заявката се изпраща отделно от данните в нея. Тоест първо php казва на mysql заявката: [sql]INSERT .... INTO .... VALUES

val1, :val2, :val3)[/sql] и после праща самата информация (каквото реално има на местата на val1, val2 и val3). Така сам можеш да видиш защо предпазва от SQL инжекции. И съответно няма нужда от addslashes или mysql_real_escape_string. htmlspecialchars не го намесвай тук. С него се защитаваш от XSS, което няма нищо общо със заявката.
От към бързо действие, как се справя - забавя ли заявката повечко от колкото стандартните заявки?
За бързодействието има моменти, в които PDO е по-бързо от обикновен драйвър, а в останалите не мисля, че има някаква разлика. По-бързо е когато можеш да направиш нещо такова:
1. Подготвяш една заявка
2. Слагаш и някакви данни
3. Изпълняваш я
4. Променяш данните
5. Пак я изпълняваш
и т.н. Идеята тук е, че заявката се праща на сървъра веднъж. MySQL я обработва веднъж, като ако след това само данните в нея

val1, :val2, :val3) са променени няма нужда да я обработва пак. Това е един от бонусите на prepared заявките.
И все пак спрете толкова да го гледате това бързодействие. Ако беше толкова значително и важно бързодействието хората още щяха да пишат на C++. Дори да е най-бавния MySQL драйвър на света пак няма да усетиш никаква разлика. А една бавна заявка с какъвто и драйвър да е пак ще е бавна и ще забави много повече отколкото всички микрооптимизацийки, които можеш да направиш по PHP кода ти. Така, че ако те притеснява толкова много бързодействието погледни как можеш да си оптимизираш самите заявки и къде можеш да сложиш индекси в таблицата си в MySQL.
Защо да ползваме при взимане от базата данни, функциите дадени от PDO (PDO::FETCH_ASSOC, а не mysql_fetch_assoc)?
Ако ползваш PDO ще ти се наложи да ползваш неговите функции. Не може да изпълниш заявка с PDO и да ползваш mysql_fetch_assoc, както не е възможно и обратното.