ISSO is no longer a product regularly released so we'll remove the issoversion tag...
[isso.git] / DbMySql.php
1 <?php
2 /*=====================================================================*\
3 || ###################################################################
4 || # Blue Static ISSO Framework
5 || # Copyright ©2002-[#]year[#] Blue Static
6 || #
7 || # This program is free software; you can redistribute it and/or modify
8 || # it under the terms of the GNU General Public License as published by
9 || # the Free Software Foundation; version [#]gpl[#] of the License.
10 || #
11 || # This program is distributed in the hope that it will be useful, but
12 || # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13 || # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14 || # more details.
15 || #
16 || # You should have received a copy of the GNU General Public License along
17 || # with this program; if not, write to the Free Software Foundation, Inc.,
18 || # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
19 || ###################################################################
20 \*=====================================================================*/
21
22 /**
23 * MySQL Database Layer (DbMySql.php)
24 *
25 * @package ISSO
26 */
27
28 require_once('ISSO/Db.php');
29
30 /**
31 * MySQL Database Layer
32 *
33 * This framework is a function wrapper for MySQL functions so we can have
34 * better error reporting and query reporting.
35 *
36 * @author Blue Static
37 * @copyright Copyright ©2002 - [#]year[#], Blue Static
38 * @version $Revision$
39 * @package ISSO
40 *
41 */
42 class BSDbMySql extends BSDb
43 {
44 // ###################################################################
45 /**
46 * Wrapper: mysql_connect
47 */
48 protected function _connect($server, $user, $password, $database)
49 {
50 $link = mysql_connect($server, $user, $password);
51 $this->_selectDb($database, $link);
52
53 return $link;
54 }
55
56 // ###################################################################
57 /**
58 * Wrapper: mysql_pconnect
59 */
60 protected function _pConnect($server, $user, $password, $database)
61 {
62 $link = mysql_pconnect($server, $user, $password);
63 $this->select_db($database, $link);
64
65 return $link;
66 }
67
68 // ###################################################################
69 /**
70 * Opens a connection to the specified database name
71 *
72 * @param string Database name
73 * @param integer DB-Link
74 */
75 private function _selectDb($database, $link)
76 {
77 if (!mysql_select_db($database, $link))
78 {
79 $this->_error('Cannot use the database "' . $database . '"');
80 }
81 }
82
83 // ###################################################################
84 /**
85 * Wrapper: mysql_query
86 */
87 protected function _query($string)
88 {
89 return mysql_query($string, $this->dblink);
90 }
91
92 // ###################################################################
93 /**
94 * Wrapper: mysql_escape_string
95 */
96 protected function _escapeBinary($binary)
97 {
98 return mysql_escape_string($binary);
99 }
100
101 // ###################################################################
102 /**
103 * Wrapper: mysql(_real)_escape_string
104 */
105 protected function _escapeString($string)
106 {
107 if (function_exists('mysql_real_escape_string'))
108 {
109 return @mysql_real_escape_string($string, $this->dblink);
110 }
111 else
112 {
113 return @mysql_escape_string($string);
114 }
115 }
116
117 // ###################################################################
118 /**
119 * Not supported: unescape binary string
120 */
121 protected function _unescapeBinary($string)
122 {
123 return $string;
124 }
125
126 // ###################################################################
127 /**
128 * Wrapper: mysql_fetch_assoc
129 */
130 protected function _fetchAssocArray($result)
131 {
132 return mysql_fetch_assoc($result);
133 }
134
135 // ###################################################################
136 /**
137 * Wrapper: mysql_fetch_row
138 */
139 protected function _fetchRowArray($result)
140 {
141 return mysql_fetch_row($result);
142 }
143
144 // ###################################################################
145 /**
146 * Wrapper: mysql_fetch_object
147 */
148 public function _fetchObject($result)
149 {
150 return mysql_fetch_object($result);
151 }
152
153 // ###################################################################
154 /**
155 * Wrapper: mysql_free_result
156 */
157 protected function _freeResult($result)
158 {
159 mysql_free_result($result);
160 }
161
162 // ###################################################################
163 /**
164 * Wrapper: mysql_insert_id
165 */
166 protected function _insertId()
167 {
168 return mysql_insert_id($this->dblink);
169 }
170
171 // ###################################################################
172 /**
173 * Wrapper: mysql_num_rows
174 */
175 protected function _numRows($result)
176 {
177 return mysql_num_rows($result);
178 }
179
180 // ###################################################################
181 /**
182 * Wrapper: mysql_affected_rows
183 */
184 protected function _affectedRows($result)
185 {
186 return mysql_affected_rows($this->dblink);
187 }
188
189 // ###################################################################
190 /**
191 * Starts a database transaction
192 */
193 public function transactionStart()
194 {
195 $this->query("BEGIN WORK");
196 }
197
198 // ###################################################################
199 /**
200 * Saves current transaction steps as a savepoint
201 *
202 * @param string Named savepoint
203 */
204 public function transactionSavepoint($name)
205 {
206 $this->query("SAVEPOINT $name");
207 }
208
209 // ###################################################################
210 /**
211 * Reverts a transaction back to a given savepoint
212 *
213 * @param string Named savepoint
214 */
215 public function transactionRollback($name = null)
216 {
217 $this->query("ROLLBACK" . ($name != null ? " TO SAVEPOINT $name" : ""));
218 }
219
220 // ###################################################################
221 /**
222 * Commits a database transaction
223 */
224 public function transactionCommit()
225 {
226 $this->query("COMMIT");
227 }
228 }
229
230 /*=====================================================================*\
231 || ###################################################################
232 || # $HeadURL$
233 || # $Id$
234 || ###################################################################
235 \*=====================================================================*/
236 ?>