Verzeichnisstruktur phpBB-2.0.0
- Veröffentlicht
- 03.04.2002
So funktioniert es
|
Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück |
Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
postgres7.php
001 <?php
002 /***************************************************************************
003 * postgres7.php
004 * -------------------
005 * begin : Saturday, Feb 13, 2001
006 * copyright : (C) 2001 The phpBB Group
007 * email : supportphpbb.com
008 *
009 * $Id$
010 *
011 ***************************************************************************/
012
013 /***************************************************************************
014 *
015 * This program is free software; you can redistribute it and/or modify
016 * it under the terms of the GNU General Public License as published by
017 * the Free Software Foundation; either version 2 of the License, or
018 * (at your option) any later version.
019 *
020 ***************************************************************************/
021
022 if(!defined("SQL_LAYER"))
023 {
024
025 define("SQL_LAYER","postgresql");
026
027 class sql_db
028 {
029
030 var $db_connect_id;
031 var $query_result;
032 var $in_transaction = 0;
033 var $row = array();
034 var $rowset = array();
035 var $rownum = array();
036 var $num_queries = 0;
037
038 //
039 // Constructor
040 //
041 function sql_db($sqlserver, $sqluser, $sqlpassword, $database, $persistency = true)
042 {
043 $this->connect_string = "";
044
045 if( $sqluser )
046 {
047 $this->connect_string .= "user=$sqluser ";
048 }
049
050 if( $sqlpassword )
051 {
052 $this->connect_string .= "password=$sqlpassword ";
053 }
054
055 if( $sqlserver )
056 {
057 if( ereg(":", $sqlserver) )
058 {
059 list($sqlserver, $sqlport) = split(":", $sqlserver);
060 $this->connect_string .= "host=$sqlserver port=$sqlport ";
061 }
062 else
063 {
064 if( $sqlserver != "localhost" )
065 {
066 $this->connect_string .= "host=$sqlserver ";
067 }
068 }
069 }
070
071 if( $database )
072 {
073 $this->dbname = $database;
074 $this->connect_string .= "dbname=$database";
075 }
076
077 $this->persistency = $persistency;
078
079 $this->db_connect_id = ( $this->persistency ) ? pg_pconnect($this->connect_string) : pg_connect($this->connect_string);
080
081 return ( $this->db_connect_id ) ? $this->db_connect_id : false;
082 }
083
084 //
085 // Other base methods
086 //
087 function sql_close()
088 {
089 if( $this->db_connect_id )
090 {
091 //
092 // Commit any remaining transactions
093 //
094 if( $this->in_transaction )
095 {
096 @pg_exec($this->db_connect_id, "COMMIT");
097 }
098
099 if( $this->query_result )
100 {
101 @pg_freeresult($this->query_result);
102 }
103
104 return @pg_close($this->db_connect_id);
105 }
106 else
107 {
108 return false;
109 }
110 }
111
112 //
113 // Query method
114 //
115 function sql_query($query = "", $transaction = false)
116 {
117 //
118 // Remove any pre-existing queries
119 //
120 unset($this->query_result);
121 if( $query != "" )
122 {
123 $this->num_queries++;
124
125 $query = preg_replace("/LIMIT ([0-9]+),([ 0-9]+)/", "LIMIT \\2 OFFSET \\1", $query);
126
127 if( $transaction == BEGIN_TRANSACTION && !$this->in_transaction )
128 {
129 $this->in_transaction = TRUE;
130
131 if( !@pg_exec($this->db_connect_id, "BEGIN") )
132 {
133 return false;
134 }
135 }
136
137 $this->query_result = @pg_exec($this->db_connect_id, $query);
138 if( $this->query_result )
139 {
140 if( $transaction == END_TRANSACTION )
141 {
142 $this->in_transaction = FALSE;
143
144 if( !@pg_exec($this->db_connect_id, "COMMIT") )
145 {
146 @pg_exec($this->db_connect_id, "ROLLBACK");
147 return false;
148 }
149 }
150
151 $this->last_query_text[$this->query_result] = $query;
152 $this->rownum[$this->query_result] = 0;
153
154 unset($this->row[$this->query_result]);
155 unset($this->rowset[$this->query_result]);
156
157 return $this->query_result;
158 }
159 else
160 {
161 if( $this->in_transaction )
162 {
163 @pg_exec($this->db_connect_id, "ROLLBACK");
164 }
165 $this->in_transaction = FALSE;
166
167 return false;
168 }
169 }
170 else
171 {
172 if( $transaction == END_TRANSACTION && $this->in_transaction )
173 {
174 $this->in_transaction = FALSE;
175
176 if( !@pg_exec($this->db_connect_id, "COMMIT") )
177 {
178 @pg_exec($this->db_connect_id, "ROLLBACK");
179 return false;
180 }
181 }
182
183 return true;
184 }
185 }
186
187 //
188 // Other query methods
189 //
190 function sql_numrows($query_id = 0)
191 {
192 if( !$query_id )
193 {
194 $query_id = $this->query_result;
195 }
196
197 return ( $query_id ) ? @pg_numrows($query_id) : false;
198 }
199
200 function sql_numfields($query_id = 0)
201 {
202 if( !$query_id )
203 {
204 $query_id = $this->query_result;
205 }
206
207 return ( $query_id ) ? @pg_numfields($query_id) : false;
208 }
209
210 function sql_fieldname($offset, $query_id = 0)
211 {
212 if( !$query_id )
213 {
214 $query_id = $this->query_result;
215 }
216
217 return ( $query_id ) ? @pg_fieldname($query_id, $offset) : false;
218 }
219
220 function sql_fieldtype($offset, $query_id = 0)
221 {
222 if( !$query_id )
223 {
224 $query_id = $this->query_result;
225 }
226
227 return ( $query_id ) ? @pg_fieldtype($query_id, $offset) : false;
228 }
229
230 function sql_fetchrow($query_id = 0)
231 {
232 if( !$query_id )
233 {
234 $query_id = $this->query_result;
235 }
236
237 if($query_id)
238 {
239 $this->row = @pg_fetch_array($query_id, $this->rownum[$query_id]);
240
241 if( $this->row )
242 {
243 $this->rownum[$query_id]++;
244 return $this->row;
245 }
246 }
247
248 return false;
249 }
250
251 function sql_fetchrowset($query_id = 0)
252 {
253 if( !$query_id )
254 {
255 $query_id = $this->query_result;
256 }
257
258 if( $query_id )
259 {
260 unset($this->rowset[$query_id]);
261 unset($this->row[$query_id]);
262 $this->rownum[$query_id] = 0;
263
264 while( $this->rowset = @pg_fetch_array($query_id, $this->rownum[$query_id], PGSQL_ASSOC) )
265 {
266 $result[] = $this->rowset;
267 $this->rownum[$query_id]++;
268 }
269
270 return $result;
271 }
272
273 return false;
274 }
275
276 function sql_fetchfield($field, $row_offset=-1, $query_id = 0)
277 {
278 if( !$query_id )
279 {
280 $query_id = $this->query_result;
281 }
282
283 if( $query_id )
284 {
285 if( $row_offset != -1 )
286 {
287 $this->row = @pg_fetch_array($query_id, $row_offset, PGSQL_ASSOC);
288 }
289 else
290 {
291 if( $this->rownum[$query_id] )
292 {
293 $this->row = @pg_fetch_array($query_id, $this->rownum[$query_id]-1, PGSQL_ASSOC);
294 }
295 else
296 {
297 $this->row = @pg_fetch_array($query_id, $this->rownum[$query_id], PGSQL_ASSOC);
298
299 if( $this->row )
300 {
301 $this->rownum[$query_id]++;
302 }
303 }
304 }
305
306 return $this->row[$field];
307 }
308
309 return false;
310 }
311
312 function sql_rowseek($offset, $query_id = 0)
313 {
314
315 if(!$query_id)
316 {
317 $query_id = $this->query_result;
318 }
319
320 if( $query_id )
321 {
322 if( $offset > -1 )
323 {
324 $this->rownum[$query_id] = $offset;
325 return true;
326 }
327 else
328 {
329 return false;
330 }
331 }
332
333 return false;
334 }
335
336 function sql_nextid()
337 {
338 $query_id = $this->query_result;
339
340 if($query_id && $this->last_query_text[$query_id] != "")
341 {
342 if( preg_match("/^INSERT[\t\n ]+INTO[\t\n ]+([a-z0-9\_\-]+)/is", $this->last_query_text[$query_id], $tablename) )
343 {
344 $query = "SELECT currval('" . $tablename[1] . "_id_seq') AS last_value";
345 $temp_q_id = @pg_exec($this->db_connect_id, $query);
346 if( !$temp_q_id )
347 {
348 return false;
349 }
350
351 $temp_result = @pg_fetch_array($temp_q_id, 0, PGSQL_ASSOC);
352
353 return ( $temp_result ) ? $temp_result['last_value'] : false;
354 }
355 }
356
357 return false;
358 }
359
360 function sql_affectedrows($query_id = 0)
361 {
362 if( !$query_id )
363 {
364 $query_id = $this->query_result;
365 }
366
367 return ( $query_id ) ? @pg_cmdtuples($query_id) : false;
368 }
369
370 function sql_freeresult($query_id = 0)
371 {
372 if( !$query_id )
373 {
374 $query_id = $this->query_result;
375 }
376
377 return ( $query_id ) ? @pg_freeresult($query_id) : false;
378 }
379
380 function sql_error($query_id = 0)
381 {
382 if( !$query_id )
383 {
384 $query_id = $this->query_result;
385 }
386
387 $result['message'] = @pg_errormessage($this->db_connect_id);
388 $result['code'] = -1;
389
390 return $result;
391 }
392
393 } // class ... db_sql
394
395 } // if ... defined
396
397 ?>