torrentpier-lts/library/Zend/Db/Adapter/Platform/SqlServer.php

119 lines
3.2 KiB
PHP
Raw Normal View History

<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
2023-04-01 09:03:34 +03:00
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
namespace Zend\Db\Adapter\Platform;
use Zend\Db\Adapter\Driver\DriverInterface;
use Zend\Db\Adapter\Driver\Pdo;
use Zend\Db\Adapter\Exception;
2023-04-01 09:03:34 +03:00
class SqlServer extends AbstractPlatform
{
2023-04-01 09:03:34 +03:00
/**
* {@inheritDoc}
*/
protected $quoteIdentifier = array('[',']');
/**
* {@inheritDoc}
*/
protected $quoteIdentifierTo = '\\';
/**
* @var resource|\PDO
*/
protected $resource = null;
2023-04-01 09:03:34 +03:00
/**
* @param null|\Zend\Db\Adapter\Driver\Sqlsrv\Sqlsrv|\Zend\Db\Adapter\Driver\Pdo\Pdo|resource|\PDO $driver
*/
public function __construct($driver = null)
{
if ($driver) {
$this->setDriver($driver);
}
}
/**
2023-04-01 09:03:34 +03:00
* @param \Zend\Db\Adapter\Driver\Sqlsrv\Sqlsrv|\Zend\Db\Adapter\Driver\Pdo\Pdo|resource|\PDO $driver
* @throws \Zend\Db\Adapter\Exception\InvalidArgumentException
2023-04-01 09:03:34 +03:00
*
* @return self
*/
public function setDriver($driver)
{
// handle Zend\Db drivers
if (($driver instanceof Pdo\Pdo && in_array($driver->getDatabasePlatformName(), array('SqlServer', 'Dblib')))
|| (($driver instanceof \PDO && in_array($driver->getAttribute(\PDO::ATTR_DRIVER_NAME), array('sqlsrv', 'dblib'))))
) {
$this->resource = $driver;
return $this;
}
throw new Exception\InvalidArgumentException('$driver must be a Sqlsrv PDO Zend\Db\Adapter\Driver or Sqlsrv PDO instance');
}
/**
2023-04-01 09:03:34 +03:00
* {@inheritDoc}
*/
public function getName()
{
return 'SQLServer';
}
/**
2023-04-01 09:03:34 +03:00
* {@inheritDoc}
*/
public function getQuoteIdentifierSymbol()
{
2023-04-01 09:03:34 +03:00
return $this->quoteIdentifier;
}
/**
2023-04-01 09:03:34 +03:00
* {@inheritDoc}
*/
public function quoteIdentifierChain($identifierChain)
{
2023-04-01 09:03:34 +03:00
return '[' . implode('].[', (array) $identifierChain) . ']';
}
/**
2023-04-01 09:03:34 +03:00
* {@inheritDoc}
*/
public function quoteValue($value)
{
if ($this->resource instanceof DriverInterface) {
$this->resource = $this->resource->getConnection()->getResource();
}
if ($this->resource instanceof \PDO) {
return $this->resource->quote($value);
}
trigger_error(
'Attempting to quote a value in ' . __CLASS__ . ' without extension/driver support '
. 'can introduce security vulnerabilities in a production environment.'
);
2023-04-01 09:03:34 +03:00
return '\'' . str_replace('\'', '\'\'', addcslashes($value, "\000\032")) . '\'';
}
/**
2023-04-01 09:03:34 +03:00
* {@inheritDoc}
*/
public function quoteTrustedValue($value)
{
if ($this->resource instanceof DriverInterface) {
$this->resource = $this->resource->getConnection()->getResource();
}
if ($this->resource instanceof \PDO) {
return $this->resource->quote($value);
}
return '\'' . str_replace('\'', '\'\'', $value) . '\'';
}
}