root/branch/rev3/common/includes/class.db.php @ 248

Revision 248, 3.6 KB (checked in by exi, 15 years ago)

Fix for 'Fatal error: Cannot re-assign $this...'
Added item search to the search page.

Line 
1<?php
2
3class DBConnection
4{
5    function DBConnection()
6    {
7        static $conn_id;
8
9        if (is_resource($conn_id))
10        {
11            $this->id_ = $conn_id;
12            return;
13        }
14        if (!$this->id_ = mysql_connect(DB_HOST, DB_USER, DB_PASS))
15            die("Unable to connect to mysql database.");
16
17        mysql_select_db(DB_NAME);
18        $conn_id = $this->id_;
19    }
20
21    function id()
22    {
23        return $this->id_;
24    }
25
26    function affectedRows()
27    {
28        return mysql_affected_rows($this->id_);
29    }
30}
31
32class DBQuery
33{
34    var $object;
35
36    function __construct()
37    {
38        if (DB_USE_QCACHE === true)
39        {
40            $object = new DBCachedQuery();
41        }
42        else
43        {
44            $object = new DBNormalQuery();
45        }
46        $this->object = $object;
47    }
48
49    function __call($name, $args)
50    {
51        return call_user_func_array(array($this->object, $name), $args);
52    }
53
54    function __set($name, $value)
55    {
56        $this->object->$name = $value;
57    }
58
59    function __unset($name)
60    {
61        unset($this->object->$name);
62    }
63
64    function __isset($name)
65    {
66        return isset($this->object->$name);
67    }
68
69    function __get($name)
70    {
71        return $this->object->$name;
72    }
73
74    function DBQuery()
75    {
76        $object = &$this->getRef($this);
77        if (DB_USE_QCACHE === true)
78        {
79            $object = new DBCachedQuery();
80        }
81        else
82        {
83            $object = new DBNormalQuery();
84        }
85    }
86
87    function &getRef(&$var)
88    {
89        return $var;
90    }
91}
92
93class DBNormalQuery
94{
95    function DBNormalQuery()
96    {
97        $this->executed_ = false;
98        $this->dbconn_ = new DBConnection;
99    }
100
101    function queryCount($increase = false)
102    {
103        static $count;
104
105        if ($increase)
106        {
107            $count++;
108        }
109
110        return $count;
111    }
112
113    function execute($sql)
114    {
115        $t1 = strtok(microtime(), ' ') + strtok('');
116
117        $this->resid_ = mysql_query($sql, $this->dbconn_->id());
118
119        if ($this->resid_ == false)
120        {
121            if (defined('DB_HALTONERROR') && DB_HALTONERROR)
122            {
123                echo "Database error: " . mysql_error($this->dbconn_->id()) . "<br>";
124                echo "SQL: " . $sql . "<br>";
125                exit;
126            }
127            else
128            {
129                return false;
130            }
131        }
132
133        $this->exectime_ = strtok(microtime(), ' ') + strtok('') - $t1;
134        $this->executed_ = true;
135
136        if (KB_PROFILE == 2)
137        {
138            file_put_contents('/tmp/profile.lst', $sql . "\nExecution time: " . $this->exectime_ . "\n", FILE_APPEND);
139        }
140
141        $this->queryCount(true);
142
143        return true;
144    }
145
146    function recordCount()
147    {
148        return mysql_num_rows($this->resid_);
149    }
150
151    function getRow()
152    {
153        if ($this->resid_)
154        {
155            return mysql_fetch_assoc($this->resid_);
156        }
157        return false;
158    }
159
160    function rewind()
161    {
162        @mysql_data_seek($this->resid_, 0);
163    }
164
165    function getInsertID()
166    {
167        return mysql_insert_id();
168    }
169
170    function execTime()
171    {
172        return $this->exectime_;
173    }
174
175    function executed()
176    {
177        return $this->executed_;
178    }
179
180    function getErrorMsg()
181    {
182        $msg = $this->sql_ . "<br>";
183        $msg .= "Query failed. " . mysql_error($this->dbconn_->id());
184
185        return $msg;
186    }
187}
188?>
Note: See TracBrowser for help on using the browser.