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 |
db2.php
001 <?php
002 /***************************************************************************
003 * db2.php
004 * -------------------
005 * begin : Saturday, Feb 13, 2001
006 * copyright : (C) 2001 The phpBB Group
007 * email : support@phpbb.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","db2");
026
027 class sql_db
028 {
029
030 var $db_connect_id;
031 var $query_result;
032 var $query_resultset;
033 var $query_numrows;
034 var $next_id;
035 var $row = array();
036 var $rowset = array();
037 var $row_index;
038 var $num_queries = 0;
039
040 //
041 // Constructor
042 //
043 function sql_db($sqlserver, $sqluser, $sqlpassword, $database, $persistency = true)
044 {
045 $this->persistency = $persistency;
046 $this->user = $sqluser;
047 $this->password = $sqlpassword;
048 $this->dbname = $database;
049
050 $this->server = $sqlserver;
051
052 if($this->persistency)
053 {
054 $this->db_connect_id = odbc_pconnect($this->server, "", "");
055 }
056 else
057 {
058 $this->db_connect_id = odbc_connect($this->server, "", "");
059 }
060
061 if($this->db_connect_id)
062 {
063 @odbc_autocommit($this->db_connect_id, off);
064
065 return $this->db_connect_id;
066 }
067 else
068 {
069 return false;
070 }
071 }
072 //
073 // Other base methods
074 //
075 function sql_close()
076 {
077 if($this->db_connect_id)
078 {
079 if($this->query_result)
080 {
081 @odbc_free_result($this->query_result);
082 }
083 $result = @odbc_close($this->db_connect_id);
084 return $result;
085 }
086 else
087 {
088 return false;
089 }
090 }
091
092
093 //
094 // Query method
095 //
096 function sql_query($query = "", $transaction = FALSE)
097 {
098 //
099 // Remove any pre-existing queries
100 //
101 unset($this->query_result);
102 unset($this->row);
103 if($query != "")
104 {
105 $this->num_queries++;
106
107 if(!eregi("^INSERT ",$query))
108 {
109 if(eregi("LIMIT", $query))
110 {
111 preg_match("/^(.*)LIMIT ([0-9]+)[, ]*([0-9]+)*/s", $query, $limits);
112
113 $query = $limits[1];
114 if($limits[3])
115 {
116 $row_offset = $limits[2];
117 $num_rows = $limits[3];
118 }
119 else
120 {
121 $row_offset = 0;
122 $num_rows = $limits[2];
123 }
124
125 $query .= " FETCH FIRST ".($row_offset+$num_rows)." ROWS ONLY OPTIMIZE FOR ".($row_offset+$num_rows)." ROWS";
126
127 $this->query_result = odbc_exec($this->db_connect_id, $query);
128
129 $query_limit_offset = $row_offset;
130 $this->result_numrows[$this->query_result] = $num_rows;
131 }
132 else
133 {
134 $this->query_result = odbc_exec($this->db_connect_id, $query);
135
136 $row_offset = 0;
137 $this->result_numrows[$this->query_result] = 5E6;
138 }
139
140 $result_id = $this->query_result;
141 if($this->query_result && eregi("^SELECT", $query))
142 {
143
144 for($i = 1; $i < odbc_num_fields($result_id)+1; $i++)
145 {
146 $this->result_field_names[$result_id][] = odbc_field_name($result_id, $i);
147 }
148
149 $i = $row_offset + 1;
150 $k = 0;
151 while(odbc_fetch_row($result_id, $i) && $k < $this->result_numrows[$result_id])
152 {
153
154 for($j = 1; $j < count($this->result_field_names[$result_id])+1; $j++)
155 {
156 $this->result_rowset[$result_id][$k][$this->result_field_names[$result_id][$j-1]] = odbc_result($result_id, $j);
157 }
158 $i++;
159 $k++;
160 }
161
162 $this->result_numrows[$result_id] = $k;
163 $this->row_index[$result_id] = 0;
164 }
165 else
166 {
167 $this->result_numrows[$result_id] = @odbc_num_rows($result_id);
168 $this->row_index[$result_id] = 0;
169 }
170 }
171 else
172 {
173 if(eregi("^(INSERT|UPDATE) ", $query))
174 {
175 $query = preg_replace("/\\\'/s", "''", $query);
176 }
177
178 $this->query_result = odbc_exec($this->db_connect_id, $query);
179
180 if($this->query_result)
181 {
182 $sql_id = "VALUES(IDENTITY_VAL_LOCAL())";
183
184 $id_result = odbc_exec($this->db_connect_id, $sql_id);
185 if($id_result)
186 {
187 $row_result = odbc_fetch_row($id_result);
188 if($row_result)
189 {
190 $this->next_id[$this->query_result] = odbc_result($id_result, 1);
191 }
192 }
193 }
194
195 odbc_commit($this->db_connect_id);
196
197 $this->query_limit_offset[$this->query_result] = 0;
198 $this->result_numrows[$this->query_result] = 0;
199 }
200
201 return $this->query_result;
202 }
203 else
204 {
205 return false;
206 }
207 }
208
209 //
210 // Other query methods
211 //
212 function sql_numrows($query_id = 0)
213 {
214 if(!$query_id)
215 {
216 $query_id = $this->query_result;
217 }
218 if($query_id)
219 {
220 return $this->result_numrows[$query_id];
221 }
222 else
223 {
224 return false;
225 }
226 }
227 function sql_affectedrows($query_id = 0)
228 {
229 if(!$query_id)
230 {
231 $query_id = $this->query_result;
232 }
233 if($query_id)
234 {
235 return $this->result_numrows[$query_id];
236 }
237 else
238 {
239 return false;
240 }
241 }
242 function sql_numfields($query_id = 0)
243 {
244 if(!$query_id)
245 {
246 $query_id = $this->query_result;
247 }
248 if($query_id)
249 {
250 $result = count($this->result_field_names[$query_id]);
251 return $result;
252 }
253 else
254 {
255 return false;
256 }
257 }
258 function sql_fieldname($offset, $query_id = 0)
259 {
260 if(!$query_id)
261 {
262 $query_id = $this->query_result;
263 }
264 if($query_id)
265 {
266 $result = $this->result_field_names[$query_id][$offset];
267 return $result;
268 }
269 else
270 {
271 return false;
272 }
273 }
274 function sql_fieldtype($offset, $query_id = 0)
275 {
276 if(!$query_id)
277 {
278 $query_id = $this->query_result;
279 }
280 if($query_id)
281 {
282 $result = @odbc_field_type($query_id, $offset);
283 return $result;
284 }
285 else
286 {
287 return false;
288 }
289 }
290 function sql_fetchrow($query_id = 0)
291 {
292 if(!$query_id)
293 {
294 $query_id = $this->query_result;
295 }
296 if($query_id)
297 {
298 if($this->row_index[$query_id] < $this->result_numrows[$query_id])
299 {
300 $result = $this->result_rowset[$query_id][$this->row_index[$query_id]];
301 $this->row_index[$query_id]++;
302 return $result;
303 }
304 else
305 {
306 return false;
307 }
308 }
309 else
310 {
311 return false;
312 }
313 }
314 function sql_fetchrowset($query_id = 0)
315 {
316 if(!$query_id)
317 {
318 $query_id = $this->query_result;
319 }
320 if($query_id)
321 {
322 $this->row_index[$query_id] = $this->result_numrows[$query_id];
323 return $this->result_rowset[$query_id];
324 }
325 else
326 {
327 return false;
328 }
329 }
330 function sql_fetchfield($field, $row = -1, $query_id = 0)
331 {
332 if(!$query_id)
333 {
334 $query_id = $this->query_result;
335 }
336 if($query_id)
337 {
338 if($row < $this->result_numrows[$query_id])
339 {
340 if($row == -1)
341 {
342 $getrow = $this->row_index[$query_id]-1;
343 }
344 else
345 {
346 $getrow = $row;
347 }
348
349 return $this->result_rowset[$query_id][$getrow][$this->result_field_names[$query_id][$field]];
350
351 }
352 else
353 {
354 return false;
355 }
356 }
357 else
358 {
359 return false;
360 }
361 }
362 function sql_rowseek($offset, $query_id = 0)
363 {
364 if(!$query_id)
365 {
366 $query_id = $this->query_result;
367 }
368 if($query_id)
369 {
370 $this->row_index[$query_id] = 0;
371 return true;
372 }
373 else
374 {
375 return false;
376 }
377 }
378 function sql_nextid($query_id = 0)
379 {
380 if(!$query_id)
381 {
382 $query_id = $this->query_result;
383 }
384 if($query_id)
385 {
386 return $this->next_id[$query_id];
387 }
388 else
389 {
390 return false;
391 }
392 }
393 function sql_freeresult($query_id = 0)
394 {
395 if(!$query_id)
396 {
397 $query_id = $this->query_result;
398 }
399 if($query_id)
400 {
401 $result = @odbc_free_result($query_id);
402 return $result;
403 }
404 else
405 {
406 return false;
407 }
408 }
409 function sql_error($query_id = 0)
410 {
411 // $result['code'] = @odbc_error($this->db_connect_id);
412 // $result['message'] = @odbc_errormsg($this->db_connect_id);
413
414 return "";
415 }
416
417 } // class sql_db
418
419 } // if ... define
420
421 ?>