C:/lib/adodb/adodb-pear.inc.php Quellcode

adodb-pear.inc.php
gehe zur Dokumentation dieser Datei
1 <?php
16  /*
17  We support:
18 
19  DB_Common
20  ---------
21  query - returns PEAR_Error on error
22  limitQuery - return PEAR_Error on error
23  prepare - does not return PEAR_Error on error
24  execute - does not return PEAR_Error on error
25  setFetchMode - supports ASSOC and ORDERED
26  errorNative
27  quote
28  nextID
29  disconnect
30 
31  getOne
32  getAssoc
33  getRow
34  getCol
35  getAll
36 
37  DB_Result
38  ---------
39  numRows - returns -1 if not supported
40  numCols
41  fetchInto - does not support passing of fetchmode
42  fetchRows - does not support passing of fetchmode
43  free
44  */
45 
46 define('ADODB_PEAR',dirname(__FILE__));
47 include_once "PEAR.php";
48 include_once ADODB_PEAR."/adodb-errorpear.inc.php";
49 include_once ADODB_PEAR."/adodb.inc.php";
50 
51 if (!defined('DB_OK')) {
52 define("DB_OK", 1);
53 define("DB_ERROR",-1);
54 
55 // autoExecute constants
56 define('DB_AUTOQUERY_INSERT', 1);
57 define('DB_AUTOQUERY_UPDATE', 2);
58 
64 define('DB_FETCHMODE_DEFAULT', 0);
65 
70 define('DB_FETCHMODE_ORDERED', 1);
71 
76 define('DB_FETCHMODE_ASSOC', 2);
77 
78 /* for compatibility */
79 
80 define('DB_GETMODE_ORDERED', DB_FETCHMODE_ORDERED);
81 define('DB_GETMODE_ASSOC', DB_FETCHMODE_ASSOC);
82 
89 define('DB_TABLEINFO_ORDER', 1);
90 define('DB_TABLEINFO_ORDERTABLE', 2);
91 define('DB_TABLEINFO_FULL', 3);
92 }
93 
101 class DB
102 {
112  function factory($type)
113  {
114  include_once(ADODB_DIR."/drivers/adodb-$type.inc.php");
115  $obj = NewADOConnection($type);
116  if (!is_object($obj)) $obj = new PEAR_Error('Unknown Database Driver: '.$dsninfo['phptype'],-1);
117  return $obj;
118  }
119 
139  function connect($dsn, $options = false)
140  {
141  if (is_array($dsn)) {
142  $dsninfo = $dsn;
143  } else {
144  $dsninfo = DB::parseDSN($dsn);
145  }
146  switch ($dsninfo["phptype"]) {
147  case 'pgsql': $type = 'postgres7'; break;
148  case 'ifx': $type = 'informix9'; break;
149  default: $type = $dsninfo["phptype"]; break;
150  }
151 
152  if (is_array($options) && isset($options["debug"]) &&
153  $options["debug"] >= 2) {
154  // expose php errors with sufficient debug level
155  @include_once("adodb-$type.inc.php");
156  } else {
157  @include_once("adodb-$type.inc.php");
158  }
159 
160  @$obj = NewADOConnection($type);
161  if (!is_object($obj)) {
162  $obj = new PEAR_Error('Unknown Database Driver: '.$dsninfo['phptype'],-1);
163  return $obj;
164  }
165  if (is_array($options)) {
166  foreach($options as $k => $v) {
167  switch(strtolower($k)) {
168  case 'persist':
169  case 'persistent': $persist = $v; break;
170  #ibase
171  case 'dialect': $obj->dialect = $v; break;
172  case 'charset': $obj->charset = $v; break;
173  case 'buffers': $obj->buffers = $v; break;
174  #ado
175  case 'charpage': $obj->charPage = $v; break;
176  #mysql
177  case 'clientflags': $obj->clientFlags = $v; break;
178  }
179  }
180  } else {
181  $persist = false;
182  }
183 
184  if (isset($dsninfo['socket'])) $dsninfo['hostspec'] .= ':'.$dsninfo['socket'];
185  else if (isset($dsninfo['port'])) $dsninfo['hostspec'] .= ':'.$dsninfo['port'];
186 
187  if($persist) $ok = $obj->PConnect($dsninfo['hostspec'], $dsninfo['username'],$dsninfo['password'],$dsninfo['database']);
188  else $ok = $obj->Connect($dsninfo['hostspec'], $dsninfo['username'],$dsninfo['password'],$dsninfo['database']);
189 
190  if (!$ok) $obj = ADODB_PEAR_Error();
191  return $obj;
192  }
193 
199  function apiVersion()
200  {
201  return 2;
202  }
203 
211  function isError($value)
212  {
213  if (!is_object($value)) return false;
214  $class = strtolower(get_class($value));
215  return $class == 'pear_error' || is_subclass_of($value, 'pear_error') ||
216  $class == 'db_error' || is_subclass_of($value, 'db_error');
217  }
218 
219 
229  function isWarning($value)
230  {
231  return false;
232  /*
233  return is_object($value) &&
234  (get_class( $value ) == "db_warning" ||
235  is_subclass_of($value, "db_warning"));*/
236  }
237 
270  function parseDSN($dsn)
271  {
272  if (is_array($dsn)) {
273  return $dsn;
274  }
275 
276  $parsed = array(
277  'phptype' => false,
278  'dbsyntax' => false,
279  'protocol' => false,
280  'hostspec' => false,
281  'database' => false,
282  'username' => false,
283  'password' => false
284  );
285 
286  // Find phptype and dbsyntax
287  if (($pos = strpos($dsn, '://')) !== false) {
288  $str = substr($dsn, 0, $pos);
289  $dsn = substr($dsn, $pos + 3);
290  } else {
291  $str = $dsn;
292  $dsn = NULL;
293  }
294 
295  // Get phptype and dbsyntax
296  // $str => phptype(dbsyntax)
297  if (preg_match('|^(.+?)\((.*?)\)$|', $str, $arr)) {
298  $parsed['phptype'] = $arr[1];
299  $parsed['dbsyntax'] = (empty($arr[2])) ? $arr[1] : $arr[2];
300  } else {
301  $parsed['phptype'] = $str;
302  $parsed['dbsyntax'] = $str;
303  }
304 
305  if (empty($dsn)) {
306  return $parsed;
307  }
308 
309  // Get (if found): username and password
310  // $dsn => username:password@protocol+hostspec/database
311  if (($at = strpos($dsn,'@')) !== false) {
312  $str = substr($dsn, 0, $at);
313  $dsn = substr($dsn, $at + 1);
314  if (($pos = strpos($str, ':')) !== false) {
315  $parsed['username'] = urldecode(substr($str, 0, $pos));
316  $parsed['password'] = urldecode(substr($str, $pos + 1));
317  } else {
318  $parsed['username'] = urldecode($str);
319  }
320  }
321 
322  // Find protocol and hostspec
323  // $dsn => protocol+hostspec/database
324  if (($pos=strpos($dsn, '/')) !== false) {
325  $str = substr($dsn, 0, $pos);
326  $dsn = substr($dsn, $pos + 1);
327  } else {
328  $str = $dsn;
329  $dsn = NULL;
330  }
331 
332  // Get protocol + hostspec
333  // $str => protocol+hostspec
334  if (($pos=strpos($str, '+')) !== false) {
335  $parsed['protocol'] = substr($str, 0, $pos);
336  $parsed['hostspec'] = urldecode(substr($str, $pos + 1));
337  } else {
338  $parsed['hostspec'] = urldecode($str);
339  }
340 
341  // Get dabase if any
342  // $dsn => database
343  if (!empty($dsn)) {
344  $parsed['database'] = $dsn;
345  }
346 
347  return $parsed;
348  }
349 
361  function assertExtension($name)
362  {
363  if (!extension_loaded($name)) {
364  $dlext = (strncmp(PHP_OS,'WIN',3) === 0) ? '.dll' : '.so';
365  @dl($name . $dlext);
366  }
367  if (!extension_loaded($name)) {
368  return false;
369  }
370  return true;
371  }
372 }
373 
374 ?>




Korrekturen, Hinweise und Ergänzungen

Bitte scheuen Sie sich nicht und melden Sie, was auf dieser Seite sachlich falsch oder irreführend ist, was ergänzt werden sollte, was fehlt usw. Dazu bitte oben aus dem Menü Seite den Eintrag Support Forum wählen. Es ist eine kostenlose Anmeldung erforderlich, um Anmerkungen zu posten. Unpassende Postings, Spam usw. werden kommentarlos entfernt.