Ваш код - беспорядок, возможно, потому что вы такой возбужденный ...
connect()
метод - почему он там?:
if ($db === NULL)
должно быть:
if (self::$db === NULL)
self::$db = new $class();
Итак, если $class == __CLASS__ == db
, вы делаете self::$db = new db();
, похоже, не правильно.
Нельзя использовать PDO для подготовки идентификатора, например таблицы или столбца.
$db->prepare('SELECT * FROM :table WHERE id = :id')->execute(array('table' => 'test', 'id' => 1));
Должно быть:
$db->prepare('SELECT * FROM `test` WHERE id = :id')->execute(array('id' => 1));
Попробуйте это:
class db extends PDO
{
private static $db = null;
public static function singleton()
{
if (is_null(self::$db) === true)
{
self::$db = new PDO('mysql:dbname='.reg::get('db-name').';host='.reg::get('db-host'), reg::get('db-username'), reg::get('db-password'));
}
return self::$db;
}
}
Вот так:
$result = db::singleton()->prepare('SELECT * FROM `test` WHERE id = :id')->execute(array('id' => 1));
var_dump($result);