C:/lib/adodb/drivers/adodb-mysqlt.inc.php Quellcode

adodb-mysqlt.inc.php
gehe zur Dokumentation dieser Datei
1 <?php
2 
3 /*
4 V5.19dev ??-???-2014 (c) 2000-2014 John Lim (jlim#natsoft.com). All rights reserved.
5  Released under both BSD license and Lesser GPL library license.
6  Whenever there is any discrepancy between the two licenses,
7  the BSD license will take precedence.
8  Set tabs to 8.
9 
10  MySQL code that supports transactions. For MySQL 3.23 or later.
11  Code from James Poon <jpoon88@yahoo.com>
12 
13  Requires mysql client. Works on Windows and Unix.
14 */
15 
16 // security - hide paths
17 if (!defined('ADODB_DIR')) die();
18 
19 include_once(ADODB_DIR."/drivers/adodb-mysql.inc.php");
20 
21 
22 class ADODB_mysqlt extends ADODB_mysql {
23  var $databaseType = 'mysqlt';
24  var $ansiOuter = true; // for Version 3.23.17 or later
25  var $hasTransactions = true;
26  var $autoRollback = true; // apparently mysql does not autorollback properly
27 
28  function ADODB_mysqlt()
29  {
30  global $ADODB_EXTENSION; if ($ADODB_EXTENSION) $this->rsPrefix .= 'ext_';
31  }
32 
33  /* set transaction mode
34 
35  SET [GLOBAL | SESSION] TRANSACTION ISOLATION LEVEL
36 { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE }
37 
38  */
39  function SetTransactionMode( $transaction_mode )
40  {
41  $this->_transmode = $transaction_mode;
42  if (empty($transaction_mode)) {
43  $this->Execute('SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ');
44  return;
45  }
46  if (!stristr($transaction_mode,'isolation')) $transaction_mode = 'ISOLATION LEVEL '.$transaction_mode;
47  $this->Execute("SET SESSION TRANSACTION ".$transaction_mode);
48  }
49 
50  function BeginTrans()
51  {
52  if ($this->transOff) return true;
53  $this->transCnt += 1;
54  $this->Execute('SET AUTOCOMMIT=0');
55  $this->Execute('BEGIN');
56  return true;
57  }
58 
59  function CommitTrans($ok=true)
60  {
61  if ($this->transOff) return true;
62  if (!$ok) return $this->RollbackTrans();
63 
64  if ($this->transCnt) $this->transCnt -= 1;
65  $ok = $this->Execute('COMMIT');
66  $this->Execute('SET AUTOCOMMIT=1');
67  return $ok ? true : false;
68  }
69 
70  function RollbackTrans()
71  {
72  if ($this->transOff) return true;
73  if ($this->transCnt) $this->transCnt -= 1;
74  $ok = $this->Execute('ROLLBACK');
75  $this->Execute('SET AUTOCOMMIT=1');
76  return $ok ? true : false;
77  }
78 
79  function RowLock($tables,$where='',$col='1 as adodbignore')
80  {
81  if ($this->transCnt==0) $this->BeginTrans();
82  if ($where) $where = ' where '.$where;
83  $rs = $this->Execute("select $col from $tables $where for update");
84  return !empty($rs);
85  }
86 
87 }
88 
89 class ADORecordSet_mysqlt extends ADORecordSet_mysql{
90  var $databaseType = "mysqlt";
91 
92  function ADORecordSet_mysqlt($queryID,$mode=false)
93  {
94  if ($mode === false) {
95  global $ADODB_FETCH_MODE;
96  $mode = $ADODB_FETCH_MODE;
97  }
98 
99  switch ($mode)
100  {
101  case ADODB_FETCH_NUM: $this->fetchMode = MYSQL_NUM; break;
102  case ADODB_FETCH_ASSOC:$this->fetchMode = MYSQL_ASSOC; break;
103 
104  case ADODB_FETCH_DEFAULT:
105  case ADODB_FETCH_BOTH:
106  default: $this->fetchMode = MYSQL_BOTH; break;
107  }
108 
109  $this->adodbFetchMode = $mode;
110  $this->ADORecordSet($queryID);
111  }
112 
113  function MoveNext()
114  {
115  if (@$this->fields = mysql_fetch_array($this->_queryID,$this->fetchMode)) {
116  $this->_currentRow += 1;
117  return true;
118  }
119  if (!$this->EOF) {
120  $this->_currentRow += 1;
121  $this->EOF = true;
122  }
123  return false;
124  }
125 }
126 
128 
129  function ADORecordSet_ext_mysqlt($queryID,$mode=false)
130  {
131  if ($mode === false) {
132  global $ADODB_FETCH_MODE;
133  $mode = $ADODB_FETCH_MODE;
134  }
135  switch ($mode)
136  {
137  case ADODB_FETCH_NUM: $this->fetchMode = MYSQL_NUM; break;
138  case ADODB_FETCH_ASSOC:$this->fetchMode = MYSQL_ASSOC; break;
139 
140  case ADODB_FETCH_DEFAULT:
141  case ADODB_FETCH_BOTH:
142  default:
143  $this->fetchMode = MYSQL_BOTH; break;
144  }
145  $this->adodbFetchMode = $mode;
146  $this->ADORecordSet($queryID);
147  }
148 
149  function MoveNext()
150  {
151  return adodb_movenext($this);
152  }
153 }
154 
155 ?>




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.