46 define(
'ADODB_PEAR',dirname(__FILE__));
47 include_once
"PEAR.php";
48 include_once
ADODB_PEAR.
"/adodb-errorpear.inc.php";
51 if (!defined(
'DB_OK')) {
53 define(
"DB_ERROR",-1);
56 define(
'DB_AUTOQUERY_INSERT', 1);
57 define(
'DB_AUTOQUERY_UPDATE', 2);
64 define(
'DB_FETCHMODE_DEFAULT', 0);
70 define(
'DB_FETCHMODE_ORDERED', 1);
76 define(
'DB_FETCHMODE_ASSOC', 2);
80 define(
'DB_GETMODE_ORDERED', DB_FETCHMODE_ORDERED);
81 define(
'DB_GETMODE_ASSOC', DB_FETCHMODE_ASSOC);
89 define(
'DB_TABLEINFO_ORDER', 1);
90 define(
'DB_TABLEINFO_ORDERTABLE', 2);
91 define(
'DB_TABLEINFO_FULL', 3);
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);
141 if (is_array($dsn)) {
146 switch ($dsninfo[
"phptype"]) {
147 case 'pgsql': $type =
'postgres7';
break;
148 case 'ifx': $type =
'informix9';
break;
149 default: $type = $dsninfo[
"phptype"];
break;
152 if (is_array($options) && isset($options[
"debug"]) &&
153 $options[
"debug"] >= 2) {
155 @include_once(
"adodb-$type.inc.php");
157 @include_once(
"adodb-$type.inc.php");
160 @$obj = NewADOConnection($type);
161 if (!is_object($obj)) {
162 $obj =
new PEAR_Error(
'Unknown Database Driver: '.$dsninfo[
'phptype'],-1);
165 if (is_array($options)) {
166 foreach($options as $k => $v) {
167 switch(strtolower($k)) {
169 case 'persistent': $persist = $v;
break;
171 case 'dialect': $obj->dialect = $v;
break;
172 case 'charset': $obj->charset = $v;
break;
173 case 'buffers': $obj->buffers = $v;
break;
175 case 'charpage': $obj->charPage = $v;
break;
177 case 'clientflags': $obj->clientFlags = $v;
break;
184 if (isset($dsninfo[
'socket'])) $dsninfo[
'hostspec'] .=
':'.$dsninfo[
'socket'];
185 else if (isset($dsninfo[
'port'])) $dsninfo[
'hostspec'] .=
':'.$dsninfo[
'port'];
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']);
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');
272 if (is_array($dsn)) {
287 if (($pos = strpos($dsn,
'://')) !==
false) {
288 $str = substr($dsn, 0, $pos);
289 $dsn = substr($dsn, $pos + 3);
297 if (preg_match(
'|^(.+?)\((.*?)\)$|', $str, $arr)) {
298 $parsed[
'phptype'] = $arr[1];
299 $parsed[
'dbsyntax'] = (empty($arr[2])) ? $arr[1] : $arr[2];
301 $parsed[
'phptype'] = $str;
302 $parsed[
'dbsyntax'] = $str;
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));
318 $parsed[
'username'] = urldecode($str);
324 if (($pos=strpos($dsn,
'/')) !==
false) {
325 $str = substr($dsn, 0, $pos);
326 $dsn = substr($dsn, $pos + 1);
334 if (($pos=strpos($str,
'+')) !==
false) {
335 $parsed[
'protocol'] = substr($str, 0, $pos);
336 $parsed[
'hostspec'] = urldecode(substr($str, $pos + 1));
338 $parsed[
'hostspec'] = urldecode($str);
344 $parsed[
'database'] = $dsn;
363 if (!extension_loaded($name)) {
364 $dlext = (strncmp(PHP_OS,
'WIN',3) === 0) ?
'.dll' :
'.so';
367 if (!extension_loaded($name)) {
connect($dsn, $options=false)