Класс Base
Объект $Base:
Базовый класс для работы с произвольной базой данных
class Base extends \Cms\Site\Base { … }
Свойства
$data
$Base->data
var $data;
Методы
__construct()
new Base($open=true);
Конструктор
Параметры:
Имя | Описание |
---|---|
$open |
|
function __construct($open = true) {
parent::__construct();
if ($open) $this->init();
}
quote()
$Base->quote($value);
Экранирование специальных символов в строке и добавление кавычек
Параметры:
Имя | Описание |
---|---|
$value |
|
Возвращает: string
function quote($value) {
return $this->quoteSQLite($value);
}
quoteMySQL()
$Base->quoteMySQL($value);
Экранирование специальных символов в строке и добавление кавычек (MySQL)
Параметры:
Имя | Описание |
---|---|
$value |
|
Возвращает: string
function quoteMySQL($value) {
return "'" . str_replace("\0", "\\0", addcslashes($value, "\\'")) . "'";
}
quoteSQLite()
$Base->quoteSQLite($value);
Экранирование специальных символов в строке и добавление кавычек (SQLite)
Параметры:
Имя | Описание |
---|---|
$value |
|
Возвращает: string
function quoteSQLite($value) {
return "'" . str_replace("'", "''", $value) . "'";
}
escape()
$Base->escape($value);
Экранирование специальных символов в строке без добавления кавычек
Параметры:
Имя | Описание |
---|---|
$value |
|
Возвращает: string
function escape($value) {
return substr($this->quote($value), 1, -1);
}
query()
$Base->query($q);
Выполнение запроса и получение результата
Параметры:
Имя | Описание |
---|---|
$q |
|
Возвращает: object|false
function query($q) {
throw new \BadMethodCallException;
return false;
}
queryParamsArray()
$Base->queryParamsArray($query, $params);
Добавление параметров к запросу
Параметры:
Имя | Описание |
---|---|
$query |
|
$params |
|
Возвращает: string
function queryParamsArray($query, $params) {
return $this->queryParamsArraySQLite($query, $params);
}
queryParamsArrayMySQL()
$Base->queryParamsArrayMySQL($query, $params);
Добавление параметров к запросу (MySQL)
Параметры:
Имя | Описание |
---|---|
$query |
|
$params |
|
Возвращает: string
function queryParamsArrayMySQL($query, $params) {
$q = '';
$l = strlen($query);
$is_s = false; // after "\"
$is_q = false; // after "'"
$is_f = false; // after "`"
for ($i = 0; $i < $l; $i ++) {
$c = $query[$i];
if ($c === '\\') {
$is_s = !$is_s;
} elseif ($c === "'") {
if ($is_s) {
$is_s = false;
} else {
$is_q = !$is_q;
}
} elseif ($c === '`') {
if ($is_s) {
$is_s = false;
} else {
$is_f = !$is_f;
}
} elseif ($c === '?') {
if ($is_s) {
$is_s = false;
} elseif (!$is_q && !$is_f) {
$c = $this->quoteMySQL(array_shift($params));
}
}
$q .= $c;
}
return $q;
}
queryParamsArraySQLite()
$Base->queryParamsArraySQLite($query, $params);
Добавление параметров к запросу (SQLite)
Параметры:
Имя | Описание |
---|---|
$query |
|
$params |
|
Возвращает: string
function queryParamsArraySQLite($query, $params) {
$q = '';
$l = strlen($query);
$is_q = false; // after "'"
$is_f = false; // after "`"
for ($i = 0; $i < $l; $i ++) {
$c = $query[$i];
if ($c === "'") {
$is_q = !$is_q;
} elseif ($c === '`') {
$is_f = !$is_f;
} elseif ($c === '?') {
if (!$is_q && !$is_f) {
$c = $this->quoteSQLite(array_shift($params));
}
}
$q .= $c;
}
return $q;
}
numRows()
$Base->numRows(&$result);
Количество строк результата запроса
Параметры:
Имя | Описание |
---|---|
$result |
|
Возвращает: int
function numRows(&$result) {
if ($result instanceof \PDOStatement) return $result->rowCount();
if (is_array($result)) return count($result);
return 0;
}
fetch()
$Base->fetch(&$result);
Получение следующей строки результата запроса
Параметры:
Имя | Описание |
---|---|
$result |
|
Возвращает: array|false|null
function fetch(&$result) {
if ($result instanceof \PDOStatement) return $result->fetch(\PDO::FETCH_ASSOC);
if (is_array($result)) return array_shift($result);
return false;
}
fetchArray()
$Base->fetchArray(&$result);
Получение следующей строки результата запроса
Параметры:
Имя | Описание |
---|---|
$result |
|
Возвращает: array|false|null
function fetchArray(&$result) {
if ($result instanceof \PDOStatement) return $result->fetch(\PDO::FETCH_NUM);
if (is_array($result)) return array_values(array_shift($result));
return false;
}
replaceBackticksDoubleQuotes()
$Base->replaceBackticksDoubleQuotes($query);
Замена символов «`» на «"» (MS SQL Server, PostgreSQL)
Параметры:
Имя | Описание |
---|---|
$query |
|
Возвращает: string
function replaceBackticksDoubleQuotes($query) {
$r = '';
$is_s = false;
foreach (explode('`', $query) as $i => $p) {
if (substr_count($p, "'") % 2) {
$is_s = !$is_s;
if ($i) $r .= '`';
$r .= $p;
} elseif ($is_s) {
if ($i) $r .= '`';
$r .= $p;
} else {
if ($i) $r .= '"';
$r .= $p;
}
}
return $r;
}
qLike()
$Base->qLike($text);
Экранирование специальных символов в строке и экранирование масок символов
Параметры:
Имя | Описание |
---|---|
$text |
|
Возвращает: string
function qLike($text) {
return str_replace(array( '\\', '_', '%' ), array( '\\\\', '\\_', '\\%' ), $this->escape($text));
}
qList()
$Base->qList($a);
Представление списка значений в виде строки
Параметры:
Имя | Описание |
---|---|
$a |
|
Возвращает: string
function qList($a) {
if (!$a) return 'NULL';
if (!is_array($a)) $a = array($a);
foreach ($a as $k => $v) $a[$k] = $this->quote($v);
return implode(', ', $a);
}
isResult()
$Base->isResult(&$result);
Является ли параметр корректным результатом запроса
Параметры:
Имя | Описание |
---|---|
$result |
|
Возвращает: boolean
function isResult(&$result) {
if (is_object($result)) return true;
if (is_array($result)) return true;
return false;
}
dLookup()
$Base->dLookup($q);
Получение первого поля первой строки результата запроса
Параметры:
Имя | Описание |
---|---|
$q |
|
Возвращает: string|null
function dLookup($q) {
if (func_num_args() > 1) {
$args = func_get_args();
array_shift($args);
$q = $this->queryParamsArray($q, $args);
}
$result = $this->query($q);
if ($result) {
$row = $this->fetch($result);
$this->finish($result);
if ($row) return array_shift($row);
}
}
getRow()
$Base->getRow($q);
Получение одной строки результата запроса
Параметры:
Имя | Описание |
---|---|
$q |
|
Возвращает: array|null
function getRow($q) {
if (func_num_args() > 1) {
$args = func_get_args();
array_shift($args);
$q = $this->queryParamsArray($q, $args);
}
$result = $this->query($q);
if ($result) {
$row = $this->fetch($result);
$this->finish($result);
return $row;
}
}
getRows()
$Base->getRows($q);
Получение всех строк результата запроса
Параметры:
Имя | Описание |
---|---|
$q |
|
Возвращает: array
function getRows($q) {
if (func_num_args() > 1) {
$args = func_get_args();
array_shift($args);
$q = $this->queryParamsArray($q, $args);
}
$result = $this->query($q);
$r = array();
if ($result) {
while ($row = $this->fetch($result)) $r[] = $row;
$this->finish($result);
}
return $r;
}
finish()
$Base->finish(&$result);
Закрытие результата запроса
Параметры:
Имя | Описание |
---|---|
$result |
|
function finish(&$result) {
if ($result instanceof \PDOStatement) $result->closeCursor();
}
insertId()
$Base->insertId();
Значение параметра
auto_increment
последнего запроса
Возвращает: int|null
function insertId() {
if ($this->data instanceof \PDO) return $this->data->lastInsertId();
}
sql()
$Base->sql();
Создание объекта запроса
Возвращает: Cms\Root\Sql
function sql() {
return $this->Main()->create('sql');
}
select()
$Base->select($what=' *', $table='item', $where=null, $order=null, $limit=null);
Создание объекта запроса
SELECT
Параметры:
Имя | Описание |
---|---|
$what |
поля |
$table |
таблица |
$where |
условие |
$order |
сортировка |
$limit |
количество |
Возвращает: Cms\Root\Sql
function select($what = '*', $table = 'item', $where = null, $order = null, $limit = null) {
return $this->sql()->select($what, $table, $where, $order, $limit);
}
beginTransaction()
$Base->beginTransaction();
Начало транзакции
Возвращает: boolean
function beginTransaction() {
if ($this->data instanceof \PDO) return $this->data->beginTransaction();
return false;
}
commit()
$Base->commit();
Подтверждение транзакции
Возвращает: boolean
function commit() {
if ($this->data instanceof \PDO) return $this->data->commit();
return false;
}
rollback()
$Base->rollback();
Откат транзакции
Возвращает: boolean
function rollback() {
if ($this->data instanceof \PDO) return $this->data->rollback();
return false;
}
tables()
$Base->tables();
Список таблиц и их определений
Возвращает: array
function tables() {
$r = array();
return $r;
}
fields()
$Base->fields($result);
Получение полей запроса
Параметры:
Имя | Описание |
---|---|
$result |
|
Возвращает: array
function fields($result) {
$r = array();
if (is_array($result)) return array_keys(array_shift(array_values($result)));
return $r;
}
tableExists()
$Base->tableExists(Table $Table);
function tableExists(Table $Table) {
throw new \BadMethodCallException;
return false;
}
tableFieldExists()
$Base->tableFieldExists(Field $Field);
function tableFieldExists(Field $Field) {
throw new \BadMethodCallException;
return false;
}
tablePrimaryKey()
$Base->tablePrimaryKey(Table $Table);
function tablePrimaryKey(Table $Table) {
throw new \BadMethodCallException;
return false;
}
tableUniqueExists()
$Base->tableUniqueExists(Field $Field);
function tableUniqueExists(Field $Field) {
throw new \BadMethodCallException;
return false;
}
tableIndexExists()
$Base->tableIndexExists(Field $Field);
function tableIndexExists(Field $Field) {
throw new \BadMethodCallException;
return false;
}
tableCreate()
$Base->tableCreate(Table $Table);
function tableCreate(Table $Table) {
throw new \BadMethodCallException;
return false;
}
tableAlter()
$Base->tableAlter(Table $Table);
function tableAlter(Table $Table) {
throw new \BadMethodCallException;
return false;
}
tableAlterFieldAdd()
$Base->tableAlterFieldAdd(Field $Field);
function tableAlterFieldAdd(Field $Field) {
throw new \BadMethodCallException;
return false;
}
tableAlterFieldChange()
$Base->tableAlterFieldChange(Field $Field);
function tableAlterFieldChange(Field $Field) {
throw new \BadMethodCallException;
return false;
}
tableAlterFieldDrop()
$Base->tableAlterFieldDrop(Field $Field);
function tableAlterFieldDrop(Field $Field) {
throw new \BadMethodCallException;
return false;
}
tableAlterPrimaryKeyAdd()
$Base->tableAlterPrimaryKeyAdd(Table $Table);
function tableAlterPrimaryKeyAdd(Table $Table) {
throw new \BadMethodCallException;
return false;
}
tableAlterPrimaryKeyDrop()
$Base->tableAlterPrimaryKeyDrop(Table $Table);
function tableAlterPrimaryKeyDrop(Table $Table) {
throw new \BadMethodCallException;
return false;
}
tableAlterUniqueAdd()
$Base->tableAlterUniqueAdd(Field $Field);
function tableAlterUniqueAdd(Field $Field) {
throw new \BadMethodCallException;
return false;
}
tableAlterUniqueDrop()
$Base->tableAlterUniqueDrop(Field $Field);
function tableAlterUniqueDrop(Field $Field) {
throw new \BadMethodCallException;
return false;
}
tableAlterIndexAdd()
$Base->tableAlterIndexAdd(Field $Field);
function tableAlterIndexAdd(Field $Field) {
throw new \BadMethodCallException;
return false;
}
tableAlterIndexDrop()
$Base->tableAlterIndexDrop(Field $Field);
function tableAlterIndexDrop(Field $Field) {
throw new \BadMethodCallException;
return false;
}
tableDrop()
$Base->tableDrop(Table $Table);
function tableDrop(Table $Table) {
throw new \BadMethodCallException;
return false;
}