]>
git.wh0rd.org - tt-rss.git/blob - classes/db.php
2 class Db
implements IDb
{
3 private static $instance;
8 private function __construct() {
10 $er = error_reporting(E_ALL
);
14 $this->adapter
= new Db_Mysqli();
17 $this->adapter
= new Db_Pgsql();
20 die("Unknown DB_TYPE: " . DB_TYPE
);
23 if (!$this->adapter
) {
24 print("Error initializing database adapter for " . DB_TYPE
);
28 $db_port = defined(DB_PORT
) ?
';port='.DB_PORT
: '';
30 $this->pdo
= new PDO(DB_TYPE
. ':dbname='.DB_NAME
.';host='.DB_HOST
.$db_port,
34 $this->pdo
->setAttribute( PDO
::ATTR_ERRMODE
, PDO
::ERRMODE_WARNING
);
37 print("Error connecting via PDO.");
41 if (DB_TYPE
== "pgsql") {
43 $this->pdo
->query("set client_encoding = 'UTF-8'");
44 $this->pdo
->query("set datestyle = 'ISO, european'");
45 $this->pdo
->query("set TIME ZONE 0");
46 $this->pdo
->query("set cpu_tuple_cost = 0.5");
48 } else if (DB_TYPE
== "mysql") {
49 $this->pdo
->query("SET time_zone = '+0:0'");
51 if (defined('MYSQL_CHARSET') && MYSQL_CHARSET
) {
52 $this->pdo
->query("SET NAMES " . MYSQL_CHARSET
);
56 $this->link
= $this->adapter
->connect(DB_HOST
, DB_USER
, DB_PASS
, DB_NAME
, defined('DB_PORT') ? DB_PORT
: "");
59 print("Error connecting through adapter: " . $this->adapter
->last_error());
66 private function __clone() {
70 public static function get() {
71 if (self
::$instance == null)
72 self
::$instance = new self();
74 return self
::$instance;
77 public static function pdo() {
78 if (self
::$instance == null)
79 self
::$instance = new self();
81 return self
::$instance->pdo
;
84 static function quote($str){
88 function reconnect() {
89 $this->link
= $this->adapter
->connect(DB_HOST
, DB_USER
, DB_PASS
, DB_NAME
, defined('DB_PORT') ? DB_PORT
: "");
92 function connect($host, $user, $pass, $db, $port) {
93 //return $this->adapter->connect($host, $user, $pass, $db, $port);
97 function escape_string($s, $strip_tags = true) {
98 return $this->adapter
->escape_string($s, $strip_tags);
101 function query($query, $die_on_error = true) {
102 return $this->adapter
->query($query, $die_on_error);
105 function fetch_assoc($result) {
106 return $this->adapter
->fetch_assoc($result);
109 function num_rows($result) {
110 return $this->adapter
->num_rows($result);
113 function fetch_result($result, $row, $param) {
114 return $this->adapter
->fetch_result($result, $row, $param);
118 return $this->adapter
->close();
121 function affected_rows($result) {
122 return $this->adapter
->affected_rows($result);
125 function last_error() {
126 return $this->adapter
->last_error();
129 function last_query_error() {
130 return $this->adapter
->last_query_error();