PageRenderTime 20ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/nacridan/backup/lib/adodb_lite/adodb.inc.php

https://gitlab.com/nacridan/Nacridan
PHP | 376 lines | 213 code | 66 blank | 97 comment | 17 complexity | 5c724374f516052b29b829919b2c2050 MD5 | raw file
  1. <?php
  2. /**
  3. * ADOdb Lite is a PHP class to encapsulate multiple database APIs and is compatible with
  4. * a subset of the ADODB Command Syntax.
  5. * Currently supports Frontbase, MaxDB, miniSQL, MSSQL, MSSQL Pro, MySQLi, MySQLt, MySQL, PostgresSQL,
  6. * PostgresSQL64, PostgresSQL7, PostgresSQL8, SqLite, SqLite Pro, Sybase and Sybase ASE.
  7. *
  8. */
  9. if (! defined('_ADODB_LAYER'))
  10. define('_ADODB_LAYER', 1);
  11. if (! defined('ADODB_DIR'))
  12. define('ADODB_DIR', dirname(__FILE__));
  13. $ADODB_vers = 'V1.12 ADOdb Lite 29 November 2005 (c) 2005 Mark Dickenson. All rights reserved. Released LGPL.';
  14. define('ADODB_FETCH_DEFAULT', 0);
  15. define('ADODB_FETCH_NUM', 1);
  16. define('ADODB_FETCH_ASSOC', 2);
  17. define('ADODB_FETCH_BOTH', 3);
  18. GLOBAL $ADODB_FETCH_MODE;
  19. $ADODB_FETCH_MODE = ADODB_FETCH_DEFAULT;
  20. // DEFAULT, NUM, ASSOC or BOTH. Default follows native driver default...
  21. /**
  22. * Database connection
  23. * Usage: $db = new ADONewConnection('dbtype');
  24. *
  25. * @access public
  26. * @param string $dbtype
  27. */
  28. function &ADONewConnection($dbtype = 'mysql', $modules = '')
  29. {
  30. global $ADODB_FETCH_MODE;
  31. $false = false;
  32. @include (ADODB_DIR . '/adodb.config.php');
  33. if (strpos($dbtype, '://')) {
  34. $dsn_array = @parse_url(rawurldecode($dbtype));
  35. if (! $dsn_array || ! $dsn_array['scheme'])
  36. return $false;
  37. $dbtype = $dsn_array['scheme'];
  38. $modules = (! empty($dsn_array['fragment'])) ? $dsn_array['fragment'] : $modules;
  39. } else
  40. $dsn_array = array(
  41. 'scheme' => ''
  42. );
  43. $dbtype = strtolower($dbtype);
  44. include_once ADODB_DIR . '/adodbSQL_drivers/' . $dbtype . '/' . $dbtype . '_driver.inc';
  45. $last_module = 'driver';
  46. if (! empty($modules)) {
  47. $module_list = explode(":", strtolower($modules));
  48. foreach ($module_list as $mod) {
  49. $mod = trim($mod);
  50. include_once ADODB_DIR . '/adodbSQL_drivers/' . $dbtype . '/' . $dbtype . '_' . $mod . '_module.inc';
  51. $last_module = $mod;
  52. }
  53. $extention = $dbtype . '_' . $last_module . '_ADOConnection';
  54. } else {
  55. $extention = $dbtype . '_' . $last_module . '_ADOConnection';
  56. }
  57. $object = new $extention();
  58. $object->last_module_name = $last_module;
  59. $object->raiseErrorFn = (defined('ADODB_ERROR_HANDLER')) ? ADODB_ERROR_HANDLER : false;
  60. $object->query_count = 0;
  61. $object->query_time_total = 0;
  62. if (! empty($dsn_array['scheme'])) {
  63. if (isset($dsn_array['port']))
  64. $object->port = $dsn_array['port'];
  65. $persistent = false;
  66. $forcenew = false;
  67. if (isset($dsn_array['query'])) {
  68. $option_array = explode('&', $dsn_array['query']);
  69. foreach ($option_array as $element => $value) {
  70. $array = explode('=', $value);
  71. $data = isset($array[1]) ? $array[1] : 1;
  72. switch (strtolower($array[0])) {
  73. case 'persist':
  74. case 'persistent':
  75. $persistent = $data;
  76. break;
  77. case 'debug':
  78. $object->debug = (integer) $data;
  79. break;
  80. case 'fetchmode':
  81. $ADODB_FETCH_MODE = constant($data);
  82. break;
  83. case 'clientflags':
  84. $object->clientFlags = $data;
  85. break;
  86. case 'port':
  87. $object->port = $data;
  88. break;
  89. case 'socket':
  90. $object->socket = $data;
  91. break;
  92. case 'forcenew':
  93. $forcenew = $data;
  94. break;
  95. }
  96. }
  97. }
  98. $dsn_array['host'] = isset($dsn_array['host']) ? $dsn_array['host'] : '';
  99. $dsn_array['user'] = isset($dsn_array['user']) ? $dsn_array['user'] : '';
  100. $dsn_array['pass'] = isset($dsn_array['pass']) ? $dsn_array['pass'] : '';
  101. $dsn_array['path'] = isset($dsn_array['path']) ? substr($dsn_array['path'], 1) : '';
  102. $result = $object->_connect($dsn_array['host'], $dsn_array['user'], $dsn_array['pass'], $dsn_array['path'], $persistent, $forcenew);
  103. if (! $result)
  104. return $false;
  105. }
  106. return $object;
  107. }
  108. /**
  109. * Alternative Database connection
  110. * Usage: $db = new NewADOConnection('dbtype');
  111. *
  112. * @access public
  113. * @param string $dbtype
  114. */
  115. function &NewADOConnection($dbtype = '', $module = '')
  116. {
  117. $tmp = & ADONewConnection($dbtype, $module);
  118. return $tmp;
  119. }
  120. function &NewDataDictionary(&$connection, $dbtype = false)
  121. {
  122. if (! $dbtype)
  123. $dbtype = $connection->dbtype;
  124. include_once ADODB_DIR . '/adodb-datadict.inc.php';
  125. include_once ADODB_DIR . '/adodbSQL_drivers/' . $dbtype . '/' . $dbtype . '_datadict.inc';
  126. $class = "ADODB2_$dbtype";
  127. $dict = new $class();
  128. $dict->connection = &$connection;
  129. $dict->upperName = strtoupper($dbtype);
  130. $dict->quote = $connection->nameQuote;
  131. $dict->debug_echo = $connection->debug_echo;
  132. return $dict;
  133. }
  134. class ADOConnection
  135. {
  136. var $connectionId = false;
  137. var $record_set = false;
  138. var $database;
  139. var $dbtype;
  140. var $host;
  141. var $open;
  142. var $password;
  143. var $username;
  144. var $persistent;
  145. var $debug = false;
  146. var $debug_echo = true;
  147. var $debug_output;
  148. var $forcenewconnection = false;
  149. var $createdatabase = false;
  150. var $last_module_name;
  151. var $socket = false;
  152. var $port = false;
  153. var $clientFlags = 0;
  154. var $nameQuote = '"';
  155. var $sysDate = false;
  156. // / name of function that returns the current date
  157. var $sysTimeStamp = false;
  158. // / name of function that returns the current timestamp
  159. var $sql;
  160. var $raiseErrorFn = false;
  161. var $query_count = 0;
  162. var $query_time_total = 0;
  163. function ADOConnection()
  164. {}
  165. /**
  166. * Returns floating point version number of ADOdb Lite
  167. * Usage: $db->Version();
  168. *
  169. * @access public
  170. */
  171. function Version()
  172. {
  173. global $ADODB_vers;
  174. return (float) substr($ADODB_vers, 1);
  175. }
  176. /**
  177. * Returns true if connected to database
  178. * Usage: $db->IsConnected();
  179. *
  180. * @access public
  181. */
  182. function IsConnected()
  183. {
  184. if ($this->connectionId === false || $this->connectionId == false)
  185. return false;
  186. else
  187. return true;
  188. }
  189. /**
  190. * Normal Database connection
  191. * Usage: $result = $db->Connect('host', 'username', 'password', 'database');
  192. *
  193. * @access public
  194. * @param string $database
  195. * @param string $host
  196. * @param string $password
  197. * @param string $username
  198. * @param string $forcenew
  199. * // private
  200. */
  201. function Connect($host = "", $username = "", $password = "", $database = "", $forcenew = false)
  202. {
  203. return $this->_connect($host, $username, $password, $database, false, $forcenew);
  204. }
  205. /**
  206. * Persistent Database connection
  207. * Usage: $result = $db->PConnect('host', 'username', 'password', 'database');
  208. *
  209. * @access public
  210. * @param string $database
  211. * @param string $host
  212. * @param string $password
  213. * @param string $username
  214. */
  215. function PConnect($host = "", $username = "", $password = "", $database = "")
  216. {
  217. return $this->_connect($host, $username, $password, $database, true, false);
  218. }
  219. /**
  220. * Force New Database connection
  221. * Usage: $result = $db->NConnect('host', 'username', 'password', 'database');
  222. *
  223. * @access public
  224. * @param string $database
  225. * @param string $host
  226. * @param string $password
  227. * @param string $username
  228. */
  229. function NConnect($host = "", $username = "", $password = "", $database = "")
  230. {
  231. return $this->_connect($host, $username, $password, $database, false, true);
  232. }
  233. /**
  234. * Returns SQL query and instantiates sql statement & resultset driver
  235. * Usage: $linkId =& $db->execute( 'SELECT * FROM foo ORDER BY id' );
  236. *
  237. * @access public
  238. * @param string $sql
  239. * @return mixed Resource ID, Array
  240. */
  241. function &Execute($sql, $inputarr = false)
  242. {
  243. $rs = & $this->do_query($sql, - 1, - 1, $inputarr);
  244. return $rs;
  245. }
  246. /**
  247. * Returns SQL query and instantiates sql statement & resultset driver
  248. * Usage: $linkId =& $db->SelectLimit( 'SELECT * FROM foo ORDER BY id', $nrows, $offset );
  249. * $nrows and $offset are optional
  250. *
  251. * @access public
  252. * @param string $sql
  253. * @param string $nrows
  254. * @param string $offset
  255. * @return mixed Resource ID, Array
  256. */
  257. function &SelectLimit($sql, $nrows = -1, $offset = -1, $inputarr = false, $secs2cache = 0)
  258. {
  259. $rs = & $this->do_query($sql, $offset, $nrows, $inputarr);
  260. return $rs;
  261. }
  262. /**
  263. * Display debug output and database error.
  264. *
  265. * @access private
  266. */
  267. function outp($text, $newline = false)
  268. {
  269. $this->debug_output = "<br>\n(" . $this->dbtype . "): " . htmlspecialchars($text) . "<br>\n Error (" . $this->ErrorNo() . '): ' . $this->ErrorMsg() . "<br>\n";
  270. if ($this->debug_echo)
  271. echo $this->debug_output;
  272. }
  273. }
  274. /**
  275. * Empty result record set for updates, inserts, ect
  276. *
  277. * @access private
  278. */
  279. class ADORecordSet_empty
  280. {
  281. var $fields = false;
  282. var $EOF = true;
  283. function MoveNext()
  284. {
  285. return;
  286. }
  287. function RecordCount()
  288. {
  289. return 0;
  290. }
  291. function FieldCount()
  292. {
  293. return 0;
  294. }
  295. function EOF()
  296. {
  297. return TRUE;
  298. }
  299. function Close()
  300. {
  301. return true;
  302. }
  303. }
  304. class ADOFieldObject
  305. {
  306. var $name = '';
  307. var $max_length = 0;
  308. var $type = "";
  309. }
  310. ?>