Не искам да оплювам излишно, но има няколко видни грешки:
Поне като ползваш PDO, го ползвай така както трябва. Защото този клас няма никъкав смисъл, по - добре си работи със mysql_query() ..., ако така работиш със PDO.
1. Първо chartset ти е зададен, да ще работи, но тъй като ползваш PDO, ползвай му вградените неща.
PHP:
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
2. Един големият + на PDO както и на MYSQLI са prepare statements, а не директните заявки.
PHP:
$query->db->prepare("SELECT * FROM table WHERE userID = :userID ");
$query->bindParam(":userID", $userID, PDO::PARAM_INT);
$query->execute();
3. Хубаво си направил метод за заявката, ами кое ще ти върне резултата?
PHP:
$query->fetch(PDO::FETCH_ASSOC);
<-- Отговаря тъй както на mysql_fetch_assoc();
PHP:
$this->db->lastInsertId('id');
<-- Последното ID от auto_increment колона.
<-- Много добър начин за взимане на брой резултати, когато се използва със COUNT() във заявката
Това са най - масовите, другите във PHP.net ги има описани.
4. За exceptions. Ако се вдигне е хубаво да имаш някой handler за тази работа. А не директно echo.
5. Употребата на foreach(); е просто не мислима ... няма логика, поне във този случай.
- В пъти по бавен от всички останали цикли е foreach();
- Не разбирам на while(); какво му има?
Не го написах това с цел да се заяждам, но мое лично мнение е, че този клас би объркал хората, който те първа се сблъскват със PDO, от колкото да има помогне.