AutorÃa | Ultima modificación | Ver Log |
<?php/*** PDO sqlsrv driver** This file is part of ADOdb, a Database Abstraction Layer library for PHP.** @package ADOdb* @link https://adodb.org Project's web site and documentation* @link https://github.com/ADOdb/ADOdb Source code and issue tracker** The ADOdb Library is dual-licensed, released under both the BSD 3-Clause* and the GNU Lesser General Public Licence (LGPL) v2.1 or, at your option,* any later version. This means you can use it in proprietary products.* See the LICENSE.md file distributed with this source code for details.* @license BSD-3-Clause* @license LGPL-2.1-or-later** @copyright 2000-2013 John Lim* @copyright 2014 Damien Regad, Mark Newnham and the ADOdb community* @author Ned Andre*/class ADODB_pdo_sqlsrv extends ADODB_pdo{var $hasTop = 'top';var $sysDate = 'convert(datetime,convert(char,GetDate(),102),102)';var $sysTimeStamp = 'GetDate()';var $arrayClass = 'ADORecordSet_array_pdo_sqlsrv';function _init(ADODB_pdo $parentDriver){$parentDriver->hasTransactions = true;$parentDriver->_bindInputArray = true;$parentDriver->hasInsertID = true;$parentDriver->fmtTimeStamp = "'Y-m-d H:i:s'";$parentDriver->fmtDate = "'Y-m-d'";}function setTransactionMode( $transaction_mode ){$this->_transmode = $transaction_mode;if (empty($transaction_mode)) {$this->_connectionID->query('SET TRANSACTION ISOLATION LEVEL READ COMMITTED');return;}if (!stristr($transaction_mode,'isolation')) $transaction_mode = 'ISOLATION LEVEL '.$transaction_mode;$this->_connectionID->query("SET TRANSACTION ".$transaction_mode);}function MetaColumns($table, $normalize = true){return false;}function MetaTables($ttype = false, $showSchema = false, $mask = false){return false;}function SelectLimit($sql, $nrows = -1, $offset = -1, $inputarr = false, $secs2cache = 0){return ADOConnection::SelectLimit($sql, $nrows, $offset, $inputarr, $secs2cache);}function ServerInfo(){return ADOConnection::ServerInfo();}}class ADORecordSet_pdo_sqlsrv extends ADORecordSet_pdo{public $databaseType = "pdo_sqlsrv";/*** returns the field object** @param int $fieldOffset Optional field offset** @return object The ADOFieldObject describing the field*/public function fetchField($fieldOffset = 0){// Default behavior allows passing in of -1 offset, which crashes the methodif ($fieldOffset == -1) {$fieldOffset++;}$o = new ADOFieldObject();$arr = @$this->_queryID->getColumnMeta($fieldOffset);if (!$arr) {$o->name = 'bad getColumnMeta()';$o->max_length = -1;$o->type = 'VARCHAR';$o->precision = 0;return $o;}$o->name = $arr['name'];if (isset($arr['sqlsrv:decl_type']) && $arr['sqlsrv:decl_type'] <> "null") {// Use the SQL Server driver specific value$o->type = $arr['sqlsrv:decl_type'];} else {$o->type = adodb_pdo_type($arr['pdo_type']);}$o->max_length = $arr['len'];$o->precision = $arr['precision'];switch (ADODB_ASSOC_CASE) {case ADODB_ASSOC_CASE_LOWER:$o->name = strtolower($o->name);break;case ADODB_ASSOC_CASE_UPPER:$o->name = strtoupper($o->name);break;}return $o;}}class ADORecordSet_array_pdo_sqlsrv extends ADORecordSet_array_pdo{/*** returns the field object** Note that this is a direct copy of the ADORecordSet_pdo_sqlsrv method** @param int $fieldOffset Optional field offset** @return object The ADOfieldobject describing the field*/public function fetchField($fieldOffset = 0){// Default behavior allows passing in of -1 offset, which crashes the methodif ($fieldOffset == -1) {$fieldOffset++;}$o = new ADOFieldObject();$arr = @$this->_queryID->getColumnMeta($fieldOffset);if (!$arr) {$o->name = 'bad getColumnMeta()';$o->max_length = -1;$o->type = 'VARCHAR';$o->precision = 0;return $o;}$o->name = $arr['name'];if (isset($arr['sqlsrv:decl_type']) && $arr['sqlsrv:decl_type'] <> "null") {// Use the SQL Server driver specific value$o->type = $arr['sqlsrv:decl_type'];} else {$o->type = adodb_pdo_type($arr['pdo_type']);}$o->max_length = $arr['len'];$o->precision = $arr['precision'];switch (ADODB_ASSOC_CASE) {case ADODB_ASSOC_CASE_LOWER:$o->name = strtolower($o->name);break;case ADODB_ASSOC_CASE_UPPER:$o->name = strtoupper($o->name);break;}return $o;}}