[ Index ] |
PHP Cross Reference of moodle-2.8 |
[Summary view] [Print] [Text view]
1 <?php 2 /* 3 V5.19 23-Apr-2014 (c) 2000-2014 John Lim (jlim#natsoft.com). All rights reserved. 4 Released under both BSD license and Lesser GPL library license. 5 Whenever there is any discrepancy between the two licenses, 6 the BSD license will take precedence. 7 Set tabs to 4 for best viewing. 8 9 Latest version is available at http://adodb.sourceforge.net 10 11 Microsoft SQL Server ADO data driver. Requires ADO and MSSQL client. 12 Works only on MS Windows. 13 14 Warning: Some versions of PHP (esp PHP4) leak memory when ADO/COM is used. 15 Please check http://bugs.php.net/ for more info. 16 */ 17 18 // security - hide paths 19 if (!defined('ADODB_DIR')) die(); 20 21 if (!defined('_ADODB_ADO_LAYER')) { 22 if (PHP_VERSION >= 5) include(ADODB_DIR."/drivers/adodb-ado5.inc.php"); 23 else include(ADODB_DIR."/drivers/adodb-ado.inc.php"); 24 } 25 26 27 class ADODB_ado_mssql extends ADODB_ado { 28 var $databaseType = 'ado_mssql'; 29 var $hasTop = 'top'; 30 var $hasInsertID = true; 31 var $sysDate = 'convert(datetime,convert(char,GetDate(),102),102)'; 32 var $sysTimeStamp = 'GetDate()'; 33 var $leftOuter = '*='; 34 var $rightOuter = '=*'; 35 var $ansiOuter = true; // for mssql7 or later 36 var $substr = "substring"; 37 var $length = 'len'; 38 var $_dropSeqSQL = "drop table %s"; 39 40 //var $_inTransaction = 1; // always open recordsets, so no transaction problems. 41 42 function ADODB_ado_mssql() 43 { 44 $this->ADODB_ado(); 45 } 46 47 function _insertid() 48 { 49 return $this->GetOne('select SCOPE_IDENTITY()'); 50 } 51 52 function _affectedrows() 53 { 54 return $this->GetOne('select @@rowcount'); 55 } 56 57 function SetTransactionMode( $transaction_mode ) 58 { 59 $this->_transmode = $transaction_mode; 60 if (empty($transaction_mode)) { 61 $this->Execute('SET TRANSACTION ISOLATION LEVEL READ COMMITTED'); 62 return; 63 } 64 if (!stristr($transaction_mode,'isolation')) $transaction_mode = 'ISOLATION LEVEL '.$transaction_mode; 65 $this->Execute("SET TRANSACTION ".$transaction_mode); 66 } 67 68 function qstr($s,$magic_quotes=false) 69 { 70 $s = ADOConnection::qstr($s, $magic_quotes); 71 return str_replace("\0", "\\\\000", $s); 72 } 73 74 function MetaColumns($table, $normalize=true) 75 { 76 $table = strtoupper($table); 77 $arr= array(); 78 $dbc = $this->_connectionID; 79 80 $osoptions = array(); 81 $osoptions[0] = null; 82 $osoptions[1] = null; 83 $osoptions[2] = $table; 84 $osoptions[3] = null; 85 86 $adors=@$dbc->OpenSchema(4, $osoptions);//tables 87 88 if ($adors){ 89 while (!$adors->EOF){ 90 $fld = new ADOFieldObject(); 91 $c = $adors->Fields(3); 92 $fld->name = $c->Value; 93 $fld->type = 'CHAR'; // cannot discover type in ADO! 94 $fld->max_length = -1; 95 $arr[strtoupper($fld->name)]=$fld; 96 97 $adors->MoveNext(); 98 } 99 $adors->Close(); 100 } 101 $false = false; 102 return empty($arr) ? $false : $arr; 103 } 104 105 function CreateSequence($seq='adodbseq',$start=1) 106 { 107 108 $this->Execute('BEGIN TRANSACTION adodbseq'); 109 $start -= 1; 110 $this->Execute("create table $seq (id float(53))"); 111 $ok = $this->Execute("insert into $seq with (tablock,holdlock) values($start)"); 112 if (!$ok) { 113 $this->Execute('ROLLBACK TRANSACTION adodbseq'); 114 return false; 115 } 116 $this->Execute('COMMIT TRANSACTION adodbseq'); 117 return true; 118 } 119 120 function GenID($seq='adodbseq',$start=1) 121 { 122 //$this->debug=1; 123 $this->Execute('BEGIN TRANSACTION adodbseq'); 124 $ok = $this->Execute("update $seq with (tablock,holdlock) set id = id + 1"); 125 if (!$ok) { 126 $this->Execute("create table $seq (id float(53))"); 127 $ok = $this->Execute("insert into $seq with (tablock,holdlock) values($start)"); 128 if (!$ok) { 129 $this->Execute('ROLLBACK TRANSACTION adodbseq'); 130 return false; 131 } 132 $this->Execute('COMMIT TRANSACTION adodbseq'); 133 return $start; 134 } 135 $num = $this->GetOne("select id from $seq"); 136 $this->Execute('COMMIT TRANSACTION adodbseq'); 137 return $num; 138 139 // in old implementation, pre 1.90, we returned GUID... 140 //return $this->GetOne("SELECT CONVERT(varchar(255), NEWID()) AS 'Char'"); 141 } 142 143 } // end class 144 145 class ADORecordSet_ado_mssql extends ADORecordSet_ado { 146 147 var $databaseType = 'ado_mssql'; 148 149 function ADORecordSet_ado_mssql($id,$mode=false) 150 { 151 return $this->ADORecordSet_ado($id,$mode); 152 } 153 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:29:05 2014 | Cross-referenced by PHPXref 0.7.1 |